我应该使用Maven作为Android应用吗?

时间:2012-01-08 15:20:58

标签: java android maven

我主要用Java编写代码并使用Maven来完成我的所有项目。我非常喜欢使用Maven,因为它很容易下载源代码和文档,更重要的是,我不需要将外部库的副本保存在我的项目源代码文件夹中。

我已经开始开发Android应用程序了,我发现eclipse的Android插件非常好。但是,所有提供的示例都不是maven项目,因此我不知道,如果我使用maven,我仍然可以从Android插件获得所有功能,或者使用Maven是否有任何缺点。

所以问题是:

  1. eclipse的Android插件的所有功能是否仍然有效?
  2. 是否比使用普通版本更难(我相信它是Ant但不确定)
  3. 任何其他缺点,例如最终应用程序的文件大小(Maven倾向于将很多东西捆绑在一起)或者在maven存储库上获取最新库的困难(这可能与Android不同)。
  4. 请不要指向此maven support for android projects?

    我想从经验丰富的开发人员那里得到答案。我已经知道可以将maven用于Android应用程序。我需要知道的是我是否应该使用它。

7 个答案:

答案 0 :(得分:35)

我的团队当前的任务是开发Android应用程序。由于它是一个小应用程序,也是某种原型,我们决定评估Maven和Android Eclipse插件。

简而言之: 在两位开发人员花了三天时间之后,我们无法在Maven项目中获得Android Eclipse插件功能。

  • R类未根据我们的资源更新
  • 我们无法直接从Eclipse中的模拟器和/或连接设备启动应用程序

由于这些问题严重阻碍了我们的开发,我们决定开发没有Maven的应用程序。 但如果你们中的任何一个人知道如何解决这些问题,我很乐意听到解决方案!

答案 1 :(得分:12)

如果你想快速运行测试,你几乎被迫使用maven。因为robolectric是当时的方式。他们说Roboletric可能更容易通过Eclipse下的maven设置(他们使用的是IDEA)。

那就是说,你看过this post还是that?你得到了什么错误信息?

我做错的典型事情:

  1. 使用maven> = 3.0.3!并避免在日食中嵌入的东西。 (如果我没记错的话,这只适用于robolectric)
  2. 使用〜/ .m2 / settings.xml,如robolectric页面所述设置android路径
  3. 在local.properties和Preferences - >下正确指定你的android sdk; Android - > SDK位置
  4. 进一步阅读thisthat或尝试mavenized robolectric示例本身,这对我有用。将其导入为现有的maven项目。
  5. 通过maven-android-sdk-deployer安装必要的sdk(在我的情况下为2.2_r3)和

    export ANDROID_HOME=/path/to/android/sdk
    mvn install -P 2.2
    
  6. 我是否提到了这个奇怪的工具:m2e-android - 不确定为什么人们需要这么多东西用Eclipse ...在这里你可以通过软件更新安装它http://rgladwell.github.com/m2e-android/updates/master/m2e-android/

  7. 希望我能正确地记住所有步骤。祝你好运!

    <强>更新

    在Eclipse下没有maven的情况下切换回普通的Android内容,因为IDE会产生一些奇怪的东西:http://groups.google.com/group/robolectric/browse_thread/thread/ac814076c40d9df1

    但Maven冒险的好处是我现在可以通过NetBeans轻松测试和调试我的项目了:)

答案 2 :(得分:2)

众所周知,Android Devolopment已从Eclipse迁移到 Android Studio

Android Studio 构建系统包含 Gradle 的Android插件。 Gradle是一个高级构建工具包,可以管理依赖项,并允许您定义自定义构建逻辑。

  

构建系统独立于Android Studio,因此您可以从Android Studio或命令行调用它。

     

Android Studio构建系统支持远程Maven依赖项。如您所知,Maven是一种流行的软件项目管理工具,可帮助使用存储库组织项目依赖项。

您可以通过Android Studio 从计算机的命令行构建Android应用程序,从而避免Eclipse中的插件混乱。

查看使用Maven构建Android应用的this教程。

请参阅此处for有关Gradle build

的更多信息

答案 3 :(得分:1)

我建议在Android上避免使用Maven进行专业开发。原因如下:

  1. Google正投入时间让Android Studio与Gradle集成。因此,maven是一项额外的工作。
  2. 如果你必须使用Maven(例如管理依赖库),那么Gradle可以使用Maven插件。请参阅https://docs.gradle.org/current/userguide/maven_plugin.html
  3. 通过将maven作为主要构建工具,您将下载大量不需要的依赖项,并且您不确定它们来自何处。这违背了这样一种观念,即对于您的Android应用程序,您理想地只需要您的代码和Android平台。换句话说,你涉及很多你不需要的库/代码。
  4. 简而言之,使用maven作为Android构建工具会增加更多的工作量,并造成管理噩梦(IMO)。

    试着说明一下:

    1. 在炉子上加热锅。
    2. 举起一个生鸡蛋。说“这是你的Android应用程序。”
    3. 将鸡蛋打入锅中。
    4. 说“这是你在maven-with-rats-nest-dependency-tree-and-unknown-code-downloads上的你的android应用程序 - 无论如何你都不需要。”
    5. 等待鸡蛋变脆。
    6. 说,“这是你的Android应用程序,当maven build用你的Android应用程序打包一个无用的或坏的库。”

答案 4 :(得分:0)

我已经能够使用Android开发工具(Kepler)和Android for Maven Eclipse 1.0.1(m2e-android)使用maven进行Android应用程序开发。请遵循这些说明http://rgladwell.github.io/m2e-android/。使用android quickstart archetype创建新项目后,修改pom.xml。添加android平台版本。 Eclipse(m2e)将在android-maven-plugin声明的pom.xml上报告错误,以解决此问题,请参阅Error in maven pom xml file: Building Android project中的alexander的回复。然后使用eclipse更新maven项目,应该是它。

答案 5 :(得分:0)

根据我自己在Intellij的经验。我使用Maven作为我的android开发过程的构建自动化工具。我开始用Maven&#34;和#34; Android应用程序开发来学习它。来自Packtpub。

答案 6 :(得分:0)

我知道我参加聚会迟到了,但是在这里看看这个项目插件: https://simpligility.github.io/android-maven-plugin/