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

构建具有动态依赖关系的多个java项目,java,ant,build,compilation,project,Java,Ant,Build,Compilation,Project,我在一个文件夹中有多个java项目。还有第二个包含库的文件夹,可以用作项目的生成依赖项。这些项目还可能依赖于其他项目。构建所有项目的最佳方法是什么 换句话说,我想在不明确说明项目依赖性的情况下构建项目。我认为最大的问题是项目之间的依赖性。无论您使用什么工具,如果您有各种相互依赖的项目,您需要在构建依赖项目之前先明确将要构建的独立项目。您的项目需要有一个清晰的依赖关系结构。您可以使用。您可以为公共库布局位置,在每个项目中的ivy.xml文档中定义已发布的工件和相互依赖关系,并让具有ivy任务的顶级

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


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

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

您可以使用。您可以为公共库布局位置,在每个项目中的ivy.xml文档中定义已发布的工件和相互依赖关系,并让具有ivy任务的顶级Ant build根据这些依赖关系确定构建顺序。

您可以使用多个构建系统。它内置了一个完整的依赖系统。几乎所有第三方开源JAR都可以通过WorldWideMaven存储库系统直接访问。基本上,您描述了所需的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记录得更好(尽管这并不太困难)。曼宁出版的书中有一章介绍了常春藤的基础知识

对于这两个过程,我建议您使用或构建公司范围的Maven存储库。这样,任何专有的第三方JAR(如Oracle JAR)也可以存储在公司范围的Maven存储库中,因为它们不在标准的全球范围的Maven存储库中

顺便说一句,如果这是一项公司范围内的工作,并且您正在将多个Ant项目转移到Ivy中,那么我有一个Ivy项目,我在其中使用它使事情变得更简单


哦,还有第三种可能性,我对它一无所知。我还相信它可以使用世界范围的Maven存储库。它是基于Groovy的,Groovy基于Java语法,这就是我所能说的。也许其他人可以告诉你细节。Gradle group声称它解决了Ant/Ivy和Maven的许多问题。

您使用的是IDE吗?专家或者仅仅是ant?我不认为这是最好的方法,但一个相当不错的方法是使用Maven作为您的构建工具。我需要一些来自控制台的东西…@aphex Maven是基于文本的,如果这是您的意思的话。库应该放在Maven存储库中吗?那么项目之间的相互依赖性呢?有没有工具可以分析哪些是独立的项目?