android - 组合 Maven/Ant+Ivy 构建管理对于双平台桌面/Android 部署的敏感性?

标签 android maven ant m2eclipse ivy

我目前正准备启动一个新项目,并想知道构建管理工具的选择(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:

  1. Maven for the base (and desktop) project,
  2. 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/

相关文章:

android - 是否可以使用 R 编程语言进行 Android 开发?

java - 如何恢复 Android 中的 Activity ?

java - 在 Maven 测试阶段禁用 Log4J 日志

Java SE Maven 项目使用 ResourceBundle 进行国际化

android - 使用 Ant 构建 Android APK 会忽略签名密码

regex - ant 的 Replaceregexp ,删除特定空格

java - AndEngine - Admob黑屏

深色模式下的 Android 10 通知图像看起来像一张负面图像

java - Spring 启动+Maven : repositoryFactoryBean not found

java - 是否有一个 ant 任务可以将 .war 添加到现有的爆炸耳朵中