Maven 是一个处理项目依赖关系的程序(它有很多东西,但这是它与您最相关的特性)。
在您的情况下,Maven 知道您的项目需要gt-shapefile
工件(Maven 对 jar 和类似 jar 的东西的术语),因为您已经告诉过它。但是 Maven 会查找pom.xml
文件gt-shapefile
并得知它还需要gt-data
,gt-referencing
和jdom
. 然后它会查看它们每个的 POM并发现更多的依赖关系,直到它收集完整的集合。
一旦 Maven 确定了您需要的所有库,它就可以执行构建(通过这种方式,它就像 Ant 或您的 IDE,运行 Java 编译器)。一旦代码被编译(或打包,如果你有 Maven 制作一个 jar),Maven 就完成了,与完成的产品无关。
Swing 是一个标准的图形库。如果您正在编写使用它的类的代码,那么这是一个编译时依赖关系,并且当您稍后运行该代码时,Java 将需要找到与 Swing 类的链接。
所以对于术语:您可以使用 Maven 或 Ant 或 NetBeans(它是 Ant 上的一个层)或 Eclipse来描述一个项目。您可以使用这些项目构建工具中的任何一个来编译使用 Swing 类的代码。事实上,由于代码 Swing 类是标准库的一部分,因此您根本不需要提及任何 jar 来使用 Swing。
好的,现在你的实际问题。
您的一种选择是仅使用 Maven。通过将现有应用程序的文件复制到 Maven 样式结构中,将其转换为 Maven 项目。有一个关于将Maven 与 NetBeans 结合使用的页面可能会有所帮助。基本上,应用程序的 Java 源代码在src/main/java
(包名目录从那里开始),非代码的东西(如图像文件)进入src/main/resources
,与单元测试相关的东西进入src/test/java
和src/test/resources
. 如果您的应用程序很简单,这应该不会太难,并且您会发现 Maven 使用起来很方便。
如果您的项目很复杂,或者与不使用 Maven 的人共享,或者您只是不想要它,那么您应该弄清楚您需要哪些依赖项。对于这些说明,我假设您已经安装了 Maven 并且在 Unix shell 中。
转到基于 Maven 的 Geotools 项目的根目录(包含它的目录pom.xml
)。您可以使用命令复制所有依赖项
mvn dependency:copy-dependencies -DoutputDirectory=jars
这将创建一个名为“jars”的子目录,其中包含构建项目所需的每个 jar(包括传递依赖项)。现在只需将这些 jar 链接到您现有的应用程序(或验证它们是否已链接)。
如果你好奇,你可以跑
mvn dependency:tree
并且 Maven 会以文本形式为您打印依赖关系树,因此您可以了解为什么需要每个 jar。