Maven和Android的性质并不能很好地融合在一起

时间:2015-02-26 19:36:49

标签: java android eclipse maven

我在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脚本。

1 个答案:

答案 0 :(得分:0)

答案最终是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。