// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= 与外部工具和服务的集成
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 与外部工具和服务的集成 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 与外部工具和服务的集成

为了便于开发各种类型的应用程序，NetBeans IDE 集成了一些外部工具和服务。下列资源将有助于您了解如何配置和使用此类工具和服务，例如，连接到数据库、使用版本控制软件管理源代码，以及使用问题跟踪器的集成支持。

== 教程和文章

=== 数据库

* link:../docs/ide/oracle-db.html[+从 NetBeans IDE 连接到 Oracle 数据库+]
* link:../docs/ide/java-db.html[+使用 Java DB (Derby) 数据库+]
* link:../docs/ide/mysql.html[+连接 MySQL 数据库+]
* link:../docs/web/mysql-webapp.html[+使用 MySQL 数据库创建简单的 Web 应用程序+]
* link:../docs/ide/install-and-configure-mysql-server.html[+在 Windows 操作系统中设置 MySQL 数据库服务器+]

=== Maven

* link:../docs/java/maven-hib-java-se.html[+使用 Hibernate 创建 Maven Swing 应用程序+]
* link:http://wiki.netbeans.org/MavenBestPractices[+Maven 最佳实践+]

=== 源代码管理

* link:../docs/ide/mercurial-queues.html[+在 NetBeans IDE 中使用 Mercurial 队列支持+]
* link:../docs/ide/git.html[+在 NetBeans IDE 中使用 Git 支持+]
* link:../docs/ide/mercurial.html[+在 NetBeans IDE 中使用 Mercurial 支持+]
* link:../docs/ide/subversion.html[+在 NetBeans IDE 中使用 Subversion 支持+]
* link:../docs/ide/cvs.html[+在 NetBeans IDE 中使用 CVS 支持+]
* link:../docs/ide/clearcase.html[+在 NetBeans IDE 中使用 ClearCase 支持+]

=== 协作开发

* link:../docs/ide/team-servers.html[+在 NetBeans IDE 中使用团队开发服务器+]

=== 优化

* link:../docs/java/profile-loadgenerator.html[+使用 NetBeans IDE 中的负载生成器+]

== 截屏视频

* link:../docs/ide/github_nb_screencast.html[+演示：使用 NetBeans IDE 设置 GitHub 资料库+]
* link:../docs/ide/git_nb_ssh_screencast.html[+演示：使用 NetBeans IDE 克隆 Git 资源库+]
* YouTube：link:http://www.youtube.com/watch?v=mQS-CViDHBU[+NetBeans IDE 中的 FindBugs+]（_作者：Geertjan Wielenga_）

== 社区提供的文档

* Geertjan 博客：link:https://blogs.oracle.com/geertjan/entry/git_in_netbeans_ide_7[+NetBeans IDE 中重定基址的 Git+]
* link:http://wiki.netbeans.org/TutorialUsingSVNLocalRepository[+使用 Subversion (SVN) 本地资源库+]
* link:http://wiki.netbeans.org/AccessMssql[+通过 NetBeans 访问 MS Access/MS SQL+]

== 其他资源

* _使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG1790[+使用和连接数据库+]
* _使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG620[+在 NetBeans 中使用 Maven+]
* _使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+使用版本控制对应用程序进行版本控制+]
* _使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG348[+在协作环境中工作+]
* link:http://wiki.netbeans.org/NetBeansUserFAQ#Version_Control_Systems[+版本控制常见问题解答+]
* link:http://wiki.netbeans.org/NetBeansUserFAQ#Database_Connectivity[+数据库连接常见问题解答+]
* link:http://www.mysql.com/why-mysql/java/[+MySQL 和 Java - 资源+]

