繁体   English   中英

使用动态依赖项构建多个Java项目

[英]Build multiple java projects with dynamic dependencies

我在一个文件夹中有多个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没有简单的方法。

另一个叫常春藤蚂蚁。 Ivy使用Ant进行构建,但可以访问Maven的全球存储库系统以获取第三方依赖项。 如果你已经在Ant上投入了大量资金,这是一个很好的妥协。 我还发现使用常春藤的Ant比Maven更好(尽管这并不太难)。 在曼宁出版的“行动中蚂蚁”中,有一篇很好的章节介绍了常春藤的基础知识。

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

顺便说一句,如果这是一个公司的努力,并且你正在将多个Ant项目移动到Ivy中,我有一个我在Github中使用的常春藤项目,这使得事情变得更容易。

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

无论您使用什么工具,如果您有各种相互依赖的项目,您需要明确在构建依赖项目之前将首先构建的独立项目。 您需要为项目建立清晰的依赖关系结构。

你可以用Apache Ivy做到这一点。 您可以为每个项目中的ivy.xml文档布置公共库的位置,定义已发布的工件和相互依赖关系,并让使用常春藤任务的顶级Ant构建根据构建顺序确定构建顺序那些依赖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM