将一个Android项目修改为能够使用Maven进行构建

将一个Android项目修改为能够使用Maven进行构建

 

       初学maven,本文展示将一个已有的项目经过修改后直接用Maven进行编译、生成apk文件并安装到手机运行的过程。不涉及Eclipse及其maven插件。

       将要修改的Demo的基本功能参见:http://blog.csdn.net/winstonwolfe/article/details/28425973文中所建立的待测应用。

 

因为在使用maven构建android项目的时需要用到一些插件,而SDK、插件、maven的版本都会对结果有所影响。这里我成功实现了将一个现有的Android项目使用maven构建,所用的一些工具的版本信息如下:

       Maven版本是3.1.1

       AndroidAPI level 19

       android-maven-plugin版本是3.8.1

 

修改原项目的源文件路径,在src文件夹下新建main文件夹,再在main文件夹下新建java子文件夹,然后将原src目录下的代码文件剪切至src\main\java路径下。

在项目根目录下编写一个pom.xml文件,具体内容如下:

       

<?xmlversion="1.0" encoding="UTF-8"?>
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.winstonwolfe.demo</groupId>
 <artifactId>Demo</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>apk</packaging> #这里指定了打包成apk的行为
 <name>Demo</name>
 
 <dependencies>
   <dependency>
           <groupId>com.google.android</groupId>
           <artifactId>android</artifactId>
           <version>2.1.2</version>
           <scope>provided</scope> #provided指明了不要将androidsdk打包
       </dependency>
  </dependencies>
 <build>
   <plugins>
     <plugin>
       <groupId>com.jayway.maven.plugins.android.generation2</groupId>
       <artifactId>android-maven-plugin</artifactId>
       <configuration>
         <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
         <assetsDirectory>${project.basedir}/assets</assetsDirectory>
         <resourceDirectory>${project.basedir}/res</resourceDirectory>
         <nativeLibrariesDirectory>${project.basedir}/src</nativeLibrariesDirectory>
         <sdk>
           <platform>19</platform>
         </sdk>
         <undeployBeforeDeploy>true</undeployBeforeDeploy>
       </configuration>
       <extensions>true</extensions>
     </plugin>
     <plugin>
       <artifactId>maven-compiler-plugin</artifactId>
       <configuration>
         <source>1.5</source>
         <target>1.5</target>
       </configuration>
     </plugin>
   </plugins>
 </build>
</project>

 

连接上android设备,然后通过命令行进入到pom文件所在目录下,执行命令:

       mvn install android:deploy android:run

 


执行成功后,会自动在手机端运行Demo。

 

附:

Maven的基本应用笔记(参考自《Maven实战》)

 

1.安装、配置环境变量,需要依赖%JAVA_HOME%变量,过程略。

 

2.编写一个pom.xml来定义一个Maven项目:

       

<?xmlversion=”1.0”encoding=”UTF-8” ?>
       <project xmlns=”...”  xmlns:xsi=”…” xsi:schemaLocation = “…”>
              <modelVersion>4.0.0 </modelVersion>  #当前POM模型的版本
              <groupId>com.winstonwolfe.maven</groupId> #公司及项目名
              <artifactId>helloworld </ artifactId > #当前Maven项目在组中的唯一ID
              <version>1.0-SNAPSHOT</version>#当前Maven项目的版本,SNAPSHOT说明该项目还处于开发中,不稳定
              <name>MavenHello World Project</name>
       </project>

 

3.编写主代码:Maven假设项目主代码位于src/main/java目录中,假设测试代码位于src/test/java目录中。项目主代码会被打包到最终的构建中(如jar包),而测试代码只在运行测试的时候用到,不会被打包。src目录与pom.xml文件平行。

       在src/main/java/com/winstonwolfe/maven/helloworld目录下新建HelloWorld.java文件,内容如下:

     

  packagecom.winstonwolfe.maven.helloworld;
       publicclass HelloWorld{
              publicString sayHello(){
                     return“Hello Maven”;
              }
 
              Publicstatic void main( String[] args){
                     System.out.print(new HelloWorld().sayHello() );
              }
}

 

4.使用maven进行编译:cd到pom文件所在目录,执行命令maven clean compile

       初次运行,会自动下载远程文件来填充本地仓库

      

       maven本地仓库路径C:\Documents andSettings\Administrator\.m2\repository

       下载完成后再次执行maven clean compile,如下提示项目编译成功:


生成的class文件位置为:com\winstonwolfe\maven\helloworld\HelloWorld.class

 

5.编写测试代码:

       为项目的pom添加一个JUnit依赖。

     

  <?xmlversion="1.0" encoding="UTF-8" ?>
       <project>
              <modelVersion>4.0.0 </modelVersion>
              <groupId>com.winstonwolfe.maven</groupId>
              <artifactId>helloworld </artifactId >
              <version>1.0-SNAPSHOT</version>
              <name>MavenHello World Project</name>
             
              <dependencies>
                     <dependency>
                            <groupId>junit</groupId>
                            <artifactId>junit</artifactId>
                            <version>4.7</version>
                            <scope>test</scope>#指定有效范围是test,即这是一个测试时的依赖
                     </dependency>
              </dependencies>
       </project>

 

       在src/test/java目录下创建测试文件:HelloWorldTest.java,内容如下:

       

packagecom.winstonwolfe.maven.helloworld;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
 
public class HelloWorldTest{
 
       @Test
       public voidtestSayHello(){
              HelloWorld helloWorld= new HelloWorld();
              String result =helloWorld.sayHello();
              assertEquals("HelloMaven", result);
       }
}
 

       调用Maven测试命令: mvn clean test:

       测试结果如下:

 

6.将项目打包

执行命令 mvn clean package,默认打包的类型为jar,Maven会在打包之前执行编译、测试等操作:


      如果要想其他的Maven项目能够访问这个jar包,则需要将它安装到本地仓库中,通过执行mvn cleaninstall命令实现,安装后可以在本地仓库看到该jar包及pom等信息。

 

       注:Maven的生命周期:compile-> test -> package -> install

 

       如果想要生成可以直接执行的jar包,需要使用maven-shade-plugin插件,修改pom文件添加该插件如下:

     

  <?xmlversion="1.0" encoding="UTF-8" ?>
       <project>
              <modelVersion>4.0.0 </modelVersion>
              <groupId>com.winstonwolfe.maven</groupId>
              <artifactId>helloworld </artifactId >
              <version>1.0-SNAPSHOT</version>
              <name>MavenHello World Project</name>
             
              <dependencies>
                     <dependency>
                            <groupId>junit</groupId>
                            <artifactId>junit</artifactId>
                            <version>4.7</version>
                            <scope>test</scope>
                     </dependency>
              </dependencies>
             
              <build>
                     <plugins>
                            <plugin>
                                   <groupId>org.apache.maven.plugins</groupId>
                                   <artifactId>maven-shade-plugin</artifactId>
                                   <version>1.2.1</version>
                                   <executions>
                                          <execution>
                                                 <phase>package</phase>
                                                 <goals>
                                                        <goal>shade</goal>
                                                 </goals>
                                                 <configuration>
                                                        <transformers>
                                                               <transformerimplementation = "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                                                      <mainClass>com.winstonwolfe.maven.helloworld.HelloWorld </mainClass>
                                                               </transformer>
                                                        </transformers>
                                                 </configuration>
                                          </execution>
                                   </executions>
                            </plugin>
                     </plugins>
              </build>
             
       </project>

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值