我目前正准备启动一个新项目,并想知道构建管理工具的选择(Maven 和 Ant+Ivy 的非排他性替代品)。
一般场景如下:
- 小型多人项目,
- 所有开发人员都使用 Eclipse 作为 IDE,
- 两个目标:Android(主要)和 Java SE,
- 我们将采用 CI(特别是 Jenkins),因此需要某种构建管理。
关于设想的项目结构:
- 一个通用模块,包含大部分代码和常见依赖项,
- 一个 Android 特定模块,包含 Android 特定依赖项和代码,
- 一个特定于桌面的模块,包含特定于桌面的依赖项和代码。
以及非技术考虑因素:
- 在该项目中,我负责构建管理和 CI,
- 我有使用 Maven 和 Ant 的经验,但在配置前者方面有更多的实践,
- 仅了解 Ivy 的基本知识,
- 我在使用 Maven 进行 Android 构建方面拥有非常复杂的经验,特别是在与 Eclipse 的互操作方面。
Currently it looks like the best choice would be to use:
- Maven for the base (and desktop) project,
- Ant+Ivy for the Android project.
表面上看起来一切顺利,但我的直觉告诉我,涉及这么多技术最终在实践中可能会很痛苦。
总而言之,我的问题是:
鉴于条件,是否可以使用 block 引用中描述的设置,或者我们应该采用纯 Maven/Ant+Ivy(如果是,请选择哪个以及为什么)?
最佳答案
哪一个?
我会选择纯 Maven 方法。
为什么?
您描述的场景完全符合 Aggregation (or Multi-Module ) 项目,从我自己的经验来看,与Ant相比,Maven提供了一种更高效、更合理、更原生的方式来管理具有模块间依赖关系的多模块项目。
您的项目结构:
my-project/
common-lib/ <-- classic Java project, build as a jar library
desktop-app/ <-- classic Java project, build as a jar application
android-app/ <-- Android project, build as a apk application
android-app-test/ <-- Android Test project, build as a apk application
pom.xml
您的根 pom.xml:
<modules>
<module>common-lib</module>
<module>desktop-app</module>
<module>android-app</module>
<module>android-app-test</module>
</modules>
通过使用android-maven-plugin ,您可以维护标准统一的方式从命令行跨团队发布多模块项目(更准确地说,android-maven-plugin用于构建Android子模块项目的发布)。
通过使用两个 eclipse 插件:m2e 和 m2e-android(均可通过 Eclipse Marketplace 获取),您可以在 Eclipse 跨团队中维护标准且统一的方式来导入/开发/调试多模块项目。
Maven 足以管理一切,因此无需使用 Ant+Ivy。
关于android - 组合 Maven/Ant+Ivy 构建管理对于双平台桌面/Android 部署的敏感性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506624/