2

我目前正准备开始一个新项目,并且想知道构建管理工具的选择(Maven 和 Ant+Ivy 的非排他性替代品)。

一般情况如下:

  • 小型,多人项目,
  • 所有开发人员都使用 Eclipse 作为 IDE,
  • 两个目标:Android(主要)和 Java SE,
  • 我们将在 CI(特别是 Jenkins)中,因此需要某种构建管理。

关于设想的项目结构:

  • 一个通用模块,包含大部分代码和常见依赖项,
  • 一个特定于 Android 的模块,带有特定于 Android 的 deps 和代码,
  • 一个特定于桌面的模块,带有特定于桌面的 deps 和代码。

以及非技术方面的考虑:

  • 在项目中,我是负责构建管理和 CI 的人,
  • 我有使用 Maven 和 Ant 的经验,但在配置前者方面有更多的实践,
  • 只有常春藤的基本知识,
  • 我在将 Maven 用于 Android 构建方面的经验非常复杂,尤其是在与 Eclipse 的互操作方面。

目前看起来最好的选择是使用:

  1. 用于基础(和桌面)项目的 Maven,
  2. 用于 Android 项目的 Ant+Ivy。

表面上看起来会很好,但我的直觉告诉我,涉及这么多技术可能最终在实践中会很痛苦。

总而言之,我的问题是:

给定条件,是否可以使用块引用中描述的设置,或者我们应该使用纯 Maven/Ant+Ivy(如果是,是哪一个以及为什么)?

4

1 回答 1

2

哪一个?

我会采用纯 Maven 方法。

为什么?

您描述的场景非常适合Aggregation (或 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。

于 2012-05-08T23:00:51.070 回答