java - 构建多个具有动态依赖关系的java项目

标签 java ant build compilation project

我的一个文件夹中有多个java项目。还有第二个包含库的文件夹,可以用作项目的构建依赖项。这些项目还可能依赖于其他项目。构建所有项目的最佳方法是什么?

换句话说,我想在不明确告知项目依赖关系的情况下构建项目。我认为最大的问题是项目之间的依赖关系。

最佳答案

有多种构建系统可供您使用。 Maven内置了完整的依赖系统。几乎所有第三方开源 jar 都可以通过 World Wide Maven 存储库系统直接访问。基本上,您描述了您需要的 jar(groupId、artifactId 和 version),Maven 将自动为您获取它。不仅如此,Maven 还将构建您的项目,而无需创建构建文件。相反,您必须在项目对象模型(pom.xml 文件)中描述您的项目,Maven 将下载您需要的所有内容,包括所有编译器等。

几乎所有新项目都使用 Maven,但 Maven 有一些缺点:

  • 由于您无法控制构建过程,因此有时感觉就像是用一根刺探黑匣子来让构建按照您想要的方式运行。
  • 文档可能很少——尤其是当您超越基本的 Java 编译时。
  • 您通常必须以特定的布局来安排您的项目。例如,源文件应位于 src/main/java 下,而 JUnit 测试应位于 src/test/java 下。您不必遵循推荐的布局,但是您必须以这种方式修改 pom.xml 文件才能使您的构建正常工作。这从一开始就违背了 pom.xml 的全部目的。
  • 如果您已经有了另一个构建系统设置(例如 Ant),您将失去一切。从 Ant 迁移到 Maven 没有简单的方法。

另一个称为 Ant,带有 Ivy 。 Ivy 使用 Ant 进行构建,但可以访问 Maven 的全局存储库系统来获取第三方依赖项。如果您已经在 Ant 金服上投入了大量资金,那么这是一个很好的妥协。我还发现 Ant 与 Ivy 的文档比 Maven 更好(尽管这并不太难)。 Manning Publication 的 Ant in Action 中有一个很好的章节介绍了 Ivy 的基础知识。 .

无论采用哪种流程,我都建议您使用 Nexus 构建公司范围的 Maven 存储库。或Artifactory 。这样,任何专有的第三方 jar(如 Oracle jar)也可以存储在公司范围的 Maven 存储库中,因为它们不会存储在标准的 World Wide Maven 存储库中。

顺便说一句,如果这是公司范围内的工作,并且您要将多个 Ant 项目移至 Ivy,那么我在 Github 中使用了一个 Ivy 项目。这让事情变得更容易。

哦,还有第三种可能,叫做 Gradle我对此一无所知。我还相信它可以使用 World Wide Maven 存储库。它基于 Groovy,而 Groovy 基于 Java 语法,这就是我能说的全部。也许其他人可以向您提供详细信息。 Gradle 小组声称它解决了 Ant/Ivy 和 Maven 的许多问题。

关于java - 构建多个具有动态依赖关系的java项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918275/

相关文章:

python - 如何在不支持 tk 的情况下构建 Python3?

scala - 在 sbt 1.0.x 中删除或排除 WatchSource

java - 意外隐式转换为字符串 : layout tag was EditText error

java - Eclipse 上的 Android 原生 c++ - 在 stdlib 上给出错误,但可以工作

java - 无法在 ant javascript 中导入类

java - 清理项目后出现 NoSuchMethodError

java - JAVA_HOME 上同时运行 JDK 32 位和 64 位

java - 多线程阻塞工作线程

linux - 用于 behat 错误的 ant 构建脚本

visual-studio - Visual Studio 在错误位置创建 bin/文件夹