问题描述
我目前正准备开始一个新项目,并想知道如何选择构建管理工具(Maven 和 Ant+Ivy 的非排他性替代品).
I'm currently preparing to start a new project and wondering about the choice of build management tools (non-exclusive alternatives of Maven and Ant+Ivy).
一般情况如下:
- 小型的多人项目,
- 所有开发人员都使用 Eclipse 作为 IDE,
- 两个目标:Android(主要)和 Java SE,
- 我们将使用 CI(特别是 Jenkins),因此需要某种构建管理.
关于设想的项目结构:
- 一个通用模块,包含大部分代码和通用依赖项,
- 一个特定于 Android 的模块,具有特定于 Android 的 deps 和代码,
- 一个特定于桌面的模块,具有特定于桌面的 deps 和代码.
以及非技术方面的考虑:
And the non-technical considerations:
- 在项目中,我负责构建管理和 CI,
- 我有使用 Maven 和 Ant 的经验,但在配置前者方面有更多的实践,
- 仅了解 Ivy 的基本知识,
- 我在将 Maven 用于 Android 构建方面的经验非常复杂,尤其是在与 Eclipse 的互操作方面.
目前看起来最好的选择是使用:
- 用于基础(和桌面)项目的 Maven,
- 用于 Android 项目的 Ant+Ivy.
从表面上看似乎一切顺利,但我的直觉告诉我,涉及如此多的技术在实践中最终可能会很痛苦.
On the surface it seems like it will go fine, but my intuition tells me involving so many technologies might end up being painful in practice.
总而言之,我的问题是:
To summarize, my question is:
鉴于条件,是否可以使用块引用中描述的设置,或者我们应该使用纯 Maven/Ant+Ivy(如果是,哪个以及为什么)?
推荐答案
哪个?
我会采用纯 Maven 方法.
Which one?
I would go with pure Maven approach.
您描述的场景非常适合聚合(或多模块)) 项目,从我自己的经验来看,与 Ant 相比,Maven 为管理具有模块间依赖关系的多模块项目提供了一种更高效、更合理、更原生的方式.
The scenario you described is perfectly fit into an Aggregation (or Multi-Module) Project, From my own experience, compare with Ant, Maven provides a more efficient, reasonable and native way for managing multi-module project with inter-module dependencies.
您的项目结构:
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:
Your root 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 子模块项目的发布).
By using android-maven-plugin, you can maintain a standard and unified way for release your multi-module project (more precisely, android-maven-plugin is used for building release for Android sub-module project) from command-line cross team.
通过使用两个 Eclipse 插件:m2e 和 m2e-android(均可通过 Eclipse Marketplace 获得),您可以在 Eclipse 跨团队中为导入/开发/调试多模块项目维护标准和统一的方式.
By using two eclipse plugins: m2e and m2e-android (all available via Eclipse Marketplace), you can maintain a standard and unified way for import/develop/debug your multi-module project in Eclipse cross team.
由于Maven有资格管理一切,因此无需使用Ant+Ivy.
As Maven is qualified for managing everything, there is no need to use Ant+Ivy.
这篇关于Maven/Ant+Ivy 组合构建管理对双平台桌面/Android 部署的敏感性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!