这是关于构建 Java 项目的。
所以我对这里的选择有点困惑。
我的要求(这是一个小项目):
需要使用特定/自定义编译器参数编译 Java 项目
项目有需要包含的 native 库
需要通过Rhino javascript编译器编译javascript->java类(https://developer.mozilla.org/en/Rhino/JavaScript_Compiler)
构建完成后,我需要运行另一个命令:ProGuard (http://proguard.sourceforge.net/)
运行 javadocs
将所有内容打包到 Jar 中(还包括外部数据,即图像、xml、ini 等)
构建/创建 .jnlp Web 启动。
在 Win 和 Linux 下都可用是最佳选择。
这是一个业余爱好项目,因此不想花费数周时间学习/管理构建系统。从开始到完成最多需要 8-12 小时的投资(否则最好继续手工完成所有事情)。
顺便说一句,如果重要的话,我的 IDE 是 Eclipse;一个好的集成插件会很好 - 但不是必需的。
到目前为止,我认为 Ant 和 Maven 是主要使用的两个构建系统。我很不清楚我应该使用哪一个或者它们有何不同?
另一个选项是 linux 下的“make”(或者可能是 cygwin)。我只使用过一次,但似乎很快就可以开始/工作。这对于 Java 或这个项目来说是一个好的选择吗?有什么缺点吗?为什么没有更多的 Java 开发人员使用它?
还有其他选择吗?
最佳答案
简而言之:花 12 个小时学习和使用 Ant。
Maven 开箱即用的感觉很好,非常容易上手,并且具有简洁的依赖关系管理,但是需要调整 pom.xml(项目的 Maven 构建文件)以满足您的需求比使用 Ant 更麻烦。
为了满足您的一些特定要求:
- 您可以使用
<compilerarg>
带有<javac>
的元素任务 - 对于 native 库,您可以添加它们:
<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 任务非常容易使用来打包所有内容- 有一个
<jw:jnlpwar>
可以从 [Ant Web Start Task 项目] (http://ant-jnlp-war.sourceforge.net) 获取该任务 - 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 集成),但它确实为您提供了所需的所有灵 active ,而且您不会发现自己在“对抗”构建工具配置文件,因为这在 Maven 中相当常见。
我可能应该提及 Java 构建(和 CI)工具中的 2 个新名称: Hudson和Jenkins 。它们是最近才出现的,可能看起来很有趣,但我绝对不会在这个早期阶段向您和您的项目推荐它们。
注意:对于缺乏真实链接表示歉意(仅允许 2 个链接 atm)
关于Java 构建;有了这些要求,什么是好的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088414/