【问题标题】:Java Build; with these requirements, what would be a good choice?Java 构建;有了这些要求,什么是好的选择?
【发布时间】:2011-11-11 00:49:46
【问题描述】:

这是关于构建 Java 项目的。

所以我对这里的选择有点困惑。

我的要求(这是一个小项目):

  • 需要使用特定/自定义编译器参数编译 Java 项目

  • 项目有需要包含的本机库

  • 需要通过Rhino javascript编译器编译javascript->java类(https://developer.mozilla.org/en/Rhino/JavaScript_Compiler)

  • 构建后我需要运行另一个命令:ProGuard (http://proguard.sourceforge.net/)

  • 运行 javadocs

  • 将所有内容打包到 Jar 中(还包括外部数据,即图像、xml、ini 等)

  • 构建/创建 .jnlp 网络启动。

  • 在 Win 和 Linux 下都可用将是最佳的。

  • 这是一个爱好项目,所以不想花费数周时间学习/管理构建系统。最多 8-12 小时的投资开始到结束(否则最好继续手工完成所有事情)。

  • 顺便说一句,如果重要的话,我的 IDE 是 Eclipse;一个不错的集成插件会很好 - 但不是必需的。

到目前为止,我认为 Ant 和 Maven 是主要使用的两个构建系统。我很不清楚我应该使用哪一个或它们有何不同?

另一个选项是 linux 下的“make”(或者可能是 cygwin)。我只使用过一次,但似乎很快就能开始/工作。对于 Java 或这个项目来说,这是一个不错的选择吗?有什么缺点吗?为什么没有更多的 java 开发者使用它?

其他选项?

【问题讨论】:

  • 我不明白你运行 proguard 的问题。您所做的就是创建罐子并按照网站上所说的去做!
  • 我投票给 maven,它有 rhino、proguard、javadoc 等插件。你可以用 maven 做你刚才说的一切。
  • make 不太适合 Java 构建,但 ant 目标可以是方便的 make 命令。
  • Proguard 没有问题。我只是想确保我使用的任何构建系统都能够自动化它。
  • java 构建会出现什么问题?我对make了解不多,但似乎它可以用得很好?

标签: java ant maven build makefile


【解决方案1】:

简而言之:花 12 小时学习和使用 Ant。

Maven 具有开箱即用的良好感觉,超级容易上手并具有简洁的依赖项管理,但为了满足您的需求,需要调整 pom.xml(您的项目的 maven 构建文件)比你使用 Ant 更容易摆弄。

为了满足您的一些特定要求:

  • 您可以将<compilerarg> 元素与<javac> 任务一起使用
  • 对于本机库,您可以添加它们:<sysproperty>key="java.library.path"
  • 将 Rhino 与 Ant 结合使用 (http://stackoverflow.com/questions/3526960/using-recent-rhino-in-ant-script)
  • Ant 有一个 Proguard 任务 (http://proguard.sourceforge.net/index.html#/manual/ant.html)
  • 对于 javadoc Ant 自带了开箱即用的 <javadoc> 任务
  • <jar> Ant 任务非常易于使用,可以打包所有内容
  • 在 (http://ant-jnlp-war.sourceforge.net) 上的 [Ant Web Start 任务项目] 中提供了一个 <jw:jnlpwar> 任务
  • Ant 无处不在,它适用于几乎所有主要平台(Linux、Unix、Windows、MacOS)
  • 网络上有大量的文档和示例,您很快就会学会 Ant,而且您花在学习上的时间很可能会在使用它的几周内“收回”自己你的构建。
  • Eclipse 与 Ant 集成开箱即用 (http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/gettingStarted/qs-81_basics.htm)

它可能不会像 Maven 那样开箱即用地进行花哨的依赖管理(尽管您可以将 Ant 与 Ivy 集成),但它确实为您提供了您所需要的所有灵活性,而且您不会发现自己在与构建工具配置文件“战斗”,因为它在 Maven 中相当常见。

我应该只提一下 Java 构建(和 CI)工具中的两个新名称:HudsonJenkins。它们是相当新的,可能看起来很有趣,但我绝对不会在这个早期阶段向您和您的项目推荐它们。

注意:对于缺少真实链接表示歉意(仅允许 2 个链接 atm)

【讨论】:

    【解决方案2】:

    Maven 是这里的最佳选择,因为它集成了所有这些

    那就去吧

    在这里,您可以节省一个额外的时间来学习 maven 的快速链接;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多