【问题标题】:Maven and Android natures not playing nice togetherMaven 和 Android 的天性不能很好地结合在一起
【发布时间】:2015-02-26 19:36:49
【问题描述】:

我在 Eclipse 中有一个现有的 Android 项目,我最近决定需要将其转换为启用 Maven 的项目,以便构建 AAR。通过单击配置 -> 转换为 Maven 项目,我能够添加一个 POM。然后我也添加了一个父 POM,以及任何依赖库项目的 POM。我添加了android-maven插件并将打包类型设置为AAR。

但是,一旦我运行 Maven 安装,我立即收到错误消息。 android-maven 插件期望 libs、assets 和 res 目录位于 src/main 目录中。就像 AndroidManfiest 一样。如果我移动了这些文件并修复了这些错误,Maven 就能够构建我的 AAR。

现在我有一些选择;要么将我的项目转换为基于模块的结构(例如 src/main),要么将其保留在 Eclipse 结构中。这些都不方便。

我相信最好的可能是保留 Eclipse 结构,这样我就可以在 Eclipse 中运行和构建我的项目。为了构建 Maven,我相信我将不得不添加一些构建脚本来将我的项目复制到另一个位置,设置 android-maven 项目结构,然后构建并安装我的 AAR。

有没有人遇到过这种情况,你的结果是什么?如果没有人回答,我将记录我的解决方案,其中涉及一些 Ant 脚本。

【问题讨论】:

  • 我们遇到了类似的问题,但我们认为继续使用 Eclipse / Maven 太疯狂了,因为 Android Studio / Gradle 是向前推荐的工具集。 (“推荐”,但我不知道如何才能真正避免它)。除了说我们尝试过、放弃并继续前进之外,恐怕没有太多帮助。
  • @brindy 是的,我不想遇到这种情况,但不幸的是,由于 NDK 支持强大,我需要 Eclipse。
  • 事实上,正在构建这些工件以在 Android Studio 项目中使用。在 Android Studio 中使用 JNI 库很容易,但是它们对构建它们的支持太少了。
  • android 和 maven 与 intellij 配合得很好
  • 为什么要在eclipse中构建android项目?为此使用 maven。

标签: java android eclipse maven


【解决方案1】:

答案是android-maven-plugin 需要额外的 Gradle 配置。这让我们可以为我们的 Android 项目中的各种目录和文件指定一个自定义位置。

一个例子,

<sourceDirectory>src/</sourceDirectory>
        <plugins>
             <plugin>
                <groupId>com.simpligility.maven.plugins</groupId>
                <artifactId>android-maven-plugin</artifactId>
                 <extensions>true</extensions>
                    <configuration>
                        <attachNativeArtifacts>true</attachNativeArtifacts>
                        <nativeLibrariesDirectory>${project.basedir}/libs</nativeLibrariesDirectory>
                        <assetsDirectory>${project.basedir}/assets</assetsDirectory>
                        <resourceDirectory>${project.basedir}/res</resourceDirectory>
                        <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
                        <failOnNonStandardStructure>false</failOnNonStandardStructure>
                    </configuration>
            </plugin>

这使我们无需更改项目结构即可构建 AAR。

【讨论】:

  • failOnNonStandardStructure 如果您已经指定了所有路径选项,那么插件就知道在哪里寻找它们,则不需要。事实上,如果您忘记指定路径(或给出不正确的路径),省略它会给您带来 Maven 立即抱怨的好处,而不是给您留下一些潜在的难以发现的错误。
猜你喜欢
  • 1970-01-01
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
相关资源
最近更新 更多