我在一个文件夹中有多个java项目。还有一个带库的第二个文件夹,可以用作项目的构建依赖项。项目也可能与其他项目有依赖关系。构建所有项目的最佳方法是什么?
换句话说,我想在没有明确告知其依赖关系的情况下构建项目。我认为最大的问题是项目之间的依赖性。
答案 0 :(得分:2)
您可以使用多个可用的构建系统。 Maven内置了完整的依赖系统。几乎所有第三方开源jar都可以通过World Wide Maven存储库系统直接访问。基本上,您描述了您需要的jar(groupId,artifactId和version),Maven会自动为您提取它。不仅如此,Maven还将构建您的项目,而无需创建构建文件。相反,您必须在项目对象模型(一个pom.xml
文件)中描述您的项目,Maven将下载您需要的所有内容,包括所有编译器等。
几乎所有新项目都使用Maven,但Maven有一些缺点:
src/main/java
下,而JUnit测试位于src/test/java
下。您不必遵循建议的布局,但是您必须以这种方式修改pom.xml
文件,以使您的构建工作。这首先打败了pom.xml的整个目的。另一个名为Ant Ivy。 Ivy使用Ant进行构建,但可以访问Maven的全球存储库系统以获取第三方依赖项。如果你已经在Ant上投入了大量资金,这是一个很好的妥协。我还发现使用常春藤的Ant比Maven更好(尽管这并不太难)。在曼宁出版物Ant in Action中有一篇很好的章节介绍常春藤的基础知识。
无论使用哪一个流程,我都建议您使用Nexus或Artifactory构建公司范围的Maven存储库。这样,任何专有的第三方jar(如Oracle jar)也可以存储在公司范围内的Maven存储库中,因为它们不在标准的World Wide Maven存储库中。
顺便说一句,如果这是公司范围内的努力,并且您正在将多个Ant项目移动到Ivy中,那么我在Github中使用的Ivy项目会让事情变得更容易。
哦,还有第三种可能性叫Gradle,我对此一无所知。我也相信它可以使用World Wide Maven存储库。它基于Groovy,它基于Java语法,这就是我所能说的。也许其他人可以填写您的详细信息。 Gradle小组认为它解决了Ant / Ivy和Maven的很多问题。
答案 1 :(得分:0)
无论您使用什么工具,如果您有各种相互依赖的项目,您需要清楚在构建依赖项目之前首先构建的独立项目。您需要为项目建立清晰的依赖关系结构。
答案 2 :(得分:0)
您可以使用Apache Ivy执行此操作。您可以为每个项目中的ivy.xml文档布置公共库的位置,定义已发布的工件和相互依赖关系,并让使用常春藤任务的顶级Ant构建根据构建顺序确定构建顺序那些依赖。