我目前正在准备开始一个新项目,并想知道构建管理工具的选择(Maven和Ant+Ivy的非排他性替代品(。
一般情况如下:
- 小型多人项目,
- 所有开发人员都使用 Eclipse 作为 IDE,
- 两个目标:Android(主要(和Java SE,
- 我们将在CI(特别是Jenkins(中,因此需要某种构建管理。
关于设想的项目结构:
- 一个通用模块,包含大部分代码和常见依赖项,
- 一个特定于 Android 的模块,具有特定于 Android 的部门和代码,
- 一个特定于桌面的模块,具有特定于桌面的 DEP 和代码。
以及非技术方面的考虑:
- 在项目中,我是负责构建管理和CI的人,
- 我有使用 Maven 和 Ant 的经验,但在配置前者方面有更多的练习,
- 只有常春藤的基本知识,
- 我在使用 Maven 进行 Android 构建时的经验参差不齐,尤其是在与 Eclipse 的互操作方面。
目前看起来最好的选择是使用:
- 基础(和桌面(项目的 Maven,
- Ant+Ivy 用于 Android 项目。
从表面上看,它似乎会很好,但我的直觉告诉我,涉及如此多的技术在实践中可能会很痛苦。
总而言之,我的问题是:
鉴于条件,是否可以使用块引用中描述的设置,或者我们应该使用纯粹的Maven/Ant+Ivy(如果是,哪一个以及为什么(?
哪一个?
我会选择纯粹的Maven方法。
为什么?
您描述的场景非常适合聚合(或多模块(项目,根据我自己的经验,与 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
您的根绒球.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。