【问题标题】:Is there a simple project build/dependency management tool for Java projects?是否有适用于 Java 项目的简单项目构建/依赖管理工具?
【发布时间】:2013-06-17 05:25:30
【问题描述】:

到目前为止,我一直在使用 Maven 和 ant+ivy,但我认为维护它们的所有配置相当困难。

我真正想要的是像 leiningen 这样不需要任何 xml 的东西,您可以在代码中管理依赖项(在 leiningen 的情况下,在 clojure 代码中)。它还带有一个方便的 cli 工具。

我知道 leiningen 在内部使用 maven,所以如果您的建议在内部也使用 maven 也不是问题,所以这是一个很好的抽象,可以简化事情并且 不需要与 maven/ant/ 交互常春藤对我也同样有益。

【问题讨论】:

  • 当您在寻找 Java 解决方案时,我没有将其发布为答案:sbt 使用 Scala 作为 DSL,并且可以很好地编译混合 Scala/Java 项目。它在内部使用常春藤。您可以在 DSL 中对聚合项目和依赖项进行建模。
  • scala-sbt.org 吗?
  • 是的,它是 scala-sbt.org
  • ANT 是 Java 构建工具之王,非常可靠,但以他的方式设置。仍然能够学习新技巧(常春藤),但实际上只是让王国继续前进。 Maven 是王储,有很多新想法,最终开始说服民众相信他会成为一个好国王。 Gradle是小王子,好学,聪明,向他的前辈学习。也许有一天他会毒死他的兄弟并说服国王退休:-)

标签: java maven ant ivy leiningen


【解决方案1】:

我会使用纯 maven 或 gradle,因为它更容易创建构建脚本,但会避开 ant。

Ivy 是一个未充分利用的依赖管理解决方案,我个人只有粗略的经验(如构建工件但不管理它们),我从未维护过 ivy 构建,但看起来很简单。需要考虑的一件事是插件的可用性和易于构建的工件(与受欢迎程度成正比),而 maven 是明显的领导者。

所以,我的建议是纯 maven 或 gradle。

编辑:近年来,对于一些 repo 所有者来说,同时维护 ivy 和 maven 构建以增加其代码的曝光率已经变得很现代。如果你要这样做,gradle 会更简单,因为一旦你要编写脚本,它就在 maven/ivy 的细节之上提供了一个很好的抽象。

【讨论】:

  • 我不想像我在问题中所说的那样使用 maven。
  • 你还说如果我们的建议包含 maven 没问题 :)
  • 我提供了一个 leiningen 的例子,它需要 no 交互 与 maven。我编辑了我的问题。 gradle 有什么用?我只听说过一两次。
  • gradle 相当容易编写脚本,有一些主要的支持,并且相当知名/有文档/有示例。
  • 您可以检查 astyanax,例如,它是使用 gradle 构建的。 github.com/Netflix/astyanax。当然,使用 gradle,您也可以将您的工件发布为 maven 或 ivy,如果您检查它们的 gradle 脚本就会发现。
【解决方案2】:

我建议使用 gradle。 Gradle 既是依赖管理又是构建系统。你用 groovy 代码编写构建脚本,没有 xml。 gradle 可以与现有的 ivy 或 maven repos 一起使用。它的配置往往比 maven 的配置要简单得多,而且非常灵活(因为您可以在需要时在构建脚本中编写代码)。

http://www.gradle.org/documentation 有大量文档

【讨论】:

    【解决方案3】:

    曾经有一个名为 Polyglot Maven 的项目,它是用代码而不是 xml 配置的 maven。此处提供了有关其当前状态的一些详细信息:What happened to Maven Polyglot?

    我还找到了Buildr(用于构建 Java 项目,使用 Ruby 编写配置)。

    我认为有必要澄清一下为什么您会发现 maven 的配置难以维护。当然,XML 可能非常讨厌,但是在 IDE 等中有很多可用的工具。如果它的实际项目结构和/或构建生命周期很困难(而且它可能是,尤其是多模块构建),那么基于 maven 的解决方案可能会赢不会好很多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多