在网上找了这方面的东西,貌似比较少,对maven也不是太了解,所以就想了个比较笨的办法,即用ant执行mvn命令来执行pom.xml文件,
maven只负责做打包和签名,其它的多渠道操作都是ant中处理。
ant.xml部分做循环的操作:
1. 文件替换
2. pom.xml中<appName>标签的修改
3. 执行mvn命令,打apk包及签名
Ant核心代码:
- <?xml version="1.0" encoding="utf-8"?>
- <project name="test" basedir="." default="run" xmlns:artifact="urn:maven-artifact-ant">
- <!-- ant build的引用 -->
- <property file="project.properties" />
- <property file="ant.properties" />
- <property file="build.properties" />
- <!-- SDK目录(获取操作系统环境变量env.ANDROID_SDK_HOME的值) -->
- <property name="sdk-folder" value="D:/Program Files/android-sdk-windows" />
- <property name="antcontrib_jar_path" value="C:/Users/Win7/Desktop/MavenAPK/ant-contrib-1.0b3.jar" />
- <property name="appName" value="AppName" />
- <property name="assetKey" value="${ant.contrib.asset.key}" />
- <property name="nowpath" value="${assetKey}" />
- <!-- 渠道名:渠道号 -->
- <property name="assetPathKey" value="${nowpath}" />
- <property name="classPath" value="a.b.ControlAnt" />
- <property name="javacPath" value="a/b/ControlAnt.java" />
- <property name="mavenPath" value="${M2_HOME}/bin" />
- <!-- 使用第三方的ant包,使ant支持for循环-->
- <taskdef resource="net/sf/antcontrib/antcontrib.properties">
- <classpath>
- <pathelement location="${antcontrib_jar_path}" />
- </classpath>
- </taskdef>
- <!-- SDK指定平台目录 -->
- <property name="sdk-platform-folder" value="${sdk-folder}/platforms/android-4" />
- <!-- SDK中tools目录 -->
- <property name="sdk-tools" value="${sdk-folder}/tools" />
- <!-- SDK指定平台中tools目录 -->
- <property name="sdk-platform-tools" value="${sdk-platform-folder}/tools" />
- <!-- 编译需要的jar; 如果项目使用到地图服务则需要maps.jar -->
- <property name="android-jar" value="${sdk-platform-folder}/android.jar" />
- <!-- 编译后的文件放置目录 -->
- <property name="outdir-target" value="target" />
- <!-- 清单文件 -->
- <property name="manifest-xml" value="AndroidManifest.xml" />
- <!-- 源文件目录 -->
- <property name="resource-dir" value="res" />
- <property name="asset-dir" value="assets" />
- <!-- java源文件目录 -->
- <property name="srcdir" value="src" />
- <property name="srcdir-ospath" value="${basedir}/${srcdir}" />
- <!-- 外部类库所在目录 -->
- <property name="external-lib" value="libs" />
- <property name="external-lib-ospath" value="${basedir}/${external-lib}" />
- <!-- 生成class目录 -->
- <property name="outdir-classes-ospath" value="${basedir}/${outdir-target}" />
- <!-- 替换文件key : value -->
- <property name="assetchannelname" value="" />
- <property name="assetchannelvalue" value="" />
- <!-- 循环修改路徑名 -->