我尝试使用属性文件来读取属性,以便在使用maven构建时将这些值设置为apk。
我已经使用了 - >>>>>>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-1</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/buildNumber.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<build>
<sourceDirectory>src</sourceDirectory>
<finalName>myapk.${majorversion}.${minor_version}.${patch_version}.${maven.build.timestamp}</finalName>
文件:buildNumber.properties
major_version=01
minor_version=00
patch_version=00
这生成myapk.01.00.00.20120127-2010.jar但apk是myapk。$ {major_version} .a。$ {minor_version}。$ {patch_version} .20120127-2010.apk
让我知道我在这里缺少什么..?
答案 0 :(得分:0)
我不知道确切的原因,但看起来properties-maven-plugin可以替换pom.xml中properties属性下正确定义的属性值,maven只能识别pom.xml中显式定义的属性名称,下面的pom对我有用:
<properties>
<!-- use property name defined in your buildNumber.properties -->
<external.build.version>${major_version}</external.build.version>
</properties>
... ...
<build>
<sourceDirectory>src</sourceDirectory>
<!-- use property name defined earlier in this pom.xml -->
<finalName>myapk.${external.build.version}</finalName>
... ...
修改强>
从我的角度来看,maven的预定义构建生命周期是相当独特的,特别是当与其他构建工具(如ADT)集成时,用于生成apk的pom版本受到限制,此外,来自plugin documentation,当前版本的android-maven-plugin没有提供任何用于在apk目标期间自定义最终apk名称的配置。发布的类似讨论here最终得出的答案并不那么完美。
作为最后一个镜头,android-maven-plugin提供了在zipalign目标期间自定义最终apk名称的选项:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<sdk>
<platform>13</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<zipalign>
<verbose>true</verbose>
<inputApk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputApk>
<!-- directly use property name defined in external properties file here -->
<outputApk>${project.build.directory}/${project.artifactId}-${major_version}-aligned.apk</outputApk>
</zipalign>
</configuration>
<executions>
<execution>
<id>alignApk</id>
<phase>package</phase>
<goals>
<goal>zipalign</goal>
</goals>
</execution>
</executions>
</plugin>
这可能是一个解决方案如果您使用maven zipalign你的最终apk(我想你这样做),你将获得所有三个输出文件(.ap_和.apk和.jar)以默认的$ {project.version}结束加上另一个带有$ {major_version} -aligned的apk结尾,但只有那三个默认的$ {project.version}将安装在maven中央存储库中。