Maven Android使用一

 Maven的座標包括:groupId、artifactId、version、packaging、classifier。java

groupId:定義當前maven項目隸屬的實際項目;android

artifactId:定義實際項目中的一個maven項目(模塊);apache

version:定義當前所處的模板;maven

packaging:定義maven項目的打包方式;ide

 

依賴對應的元素Dependencies是dependency的負數形式,很是形象,它能夠包含一個或者多個dependency。依賴也有它的一組子元素:測試

groupId、artifactId、version:依賴的基本座標;ui

type:依賴的類型google

scope:依賴的範圍,用來控制依賴於編譯classpath、測試classpath、運行classpath的關係,有compile、test、provided、runtime、import。url

依賴是可傳遞的,如A->B,B->C,那麼A->C。傳遞性依賴簡化了依賴管理,但在帶來好處的同時也給項目帶來了不少隱性的依賴,也就是咱們平時總會遇到的依賴衝突,常常須要排除依賴(exclusions)。   spa

排查依賴最經常使用到的就是mvn dependency:tree命令,將當前項目的依賴樹打出來查看。搜索發生衝突的依賴,排除其中多個依賴只留下惟一一個。

 

 相似java的繼承思想,抽取重複的配置,消除重複。Parent元素聲明父模塊,parent下的子元素groupId、artifactId、version定位父模塊座標。 

Maven建立的Lib項目

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="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.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.meibu</groupId>

  <artifactId>MeibuLoginActivity</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>apklib</packaging>//添加下面的build //plugins 就能夠設置打包方式apk和apklib

  <name>MeibuLoginActivity</name>

 

  <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     <platform.version>2.2.1</platform.version>

     <android.plugin.version>3.6.0</android.plugin.version>

  </properties>

 

  <dependencies>

     <dependency>

       <groupId>com.google.android</groupId>

       <artifactId>android</artifactId>

       <version>${platform.version}</version>//表明上面properties中的<platform.version>能夠寫成2.2.1等等

       <scope>provided</scope>

     </dependency>

     <dependency>//依賴apklib關係 其中的version是你lib中的設置的版本例如0.0.1-SNAPSHOT

       <groupId>com.meibu</groupId>

       <artifactId>MeibuBaseActivity</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <type>apklib</type>

     </dependency>

  </dependencies>

 

  <build>

     <plugins>

       <plugin>

       <groupId>com.jayway.maven.plugins.android.generation2</groupId>

         <artifactId>android-maven-plugin</artifactId>

         <version>${android.plugin.version}</version>//表示打包插件的版本號就是上面properties 中的<android.plugin.version>能夠直接寫裏面的數字

         <extensions>true</extensions>

         <configuration>

            <sdk>

              <platform>8</platform>

            </sdk>

         </configuration>

       </plugin>

     </plugins>

  </build>

</project>

建立Maven項目打包apk 依賴2個lib包,下面這個是配置文件,部分說明參考上面pom文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="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.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.meibu</groupId>

  <artifactId>MeibuTest</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>apk</packaging>

 

  <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     <platform.version>2.2.1</platform.version>

     <android.plugin.version>3.6.0</android.plugin.version>

  </properties>

 

  <dependencies>

     <dependency>

       <groupId>com.google.android</groupId>

       <artifactId>android</artifactId>

       <version>${platform.version}</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

       <groupId>com.meibu</groupId>

       <artifactId>MeibuBaseActivity</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <type>apklib</type>

     </dependency>

     <dependency>

       <groupId>com.meibu</groupId>

       <artifactId>MeibuLoginActivity</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <type>apklib</type>

     </dependency>

  </dependencies>

 

  <build>

     <plugins>

       <plugin>

       <groupId>com.jayway.maven.plugins.android.generation2</groupId>

         <artifactId>android-maven-plugin</artifactId>

         <version>${android.plugin.version}</version>

         <extensions>true</extensions>

         <configuration>

            <sdk>

              <platform>8</platform>

            </sdk>

         </configuration>

       </plugin>

     </plugins>

  </build>

</project>

最外層的pom文件

<project xmlns="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.meibu.bulidsource</groupId>

  <artifactId>com.meibu.bulidsource</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>pom</packaging>

  <name>oa-modules</name>

         <url>http://cserver.com.cn</url>

         <modules>

                  <module>com.meibu.preparesource</module>//表示加載的模塊

                   <module>MeibuTest</module>//表示加載的模塊

         </modules>

</project>

他們的順序就是他們的前後依賴關係

 

打包中的打包信息亂碼問題 設置project.build.sourceEncoding

  <properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     <platform.version>2.2.1</platform.version>

  <android.plugin.version>3.6.0</android.plugin.version>

  </properties>

相關文章
相關標籤/搜索