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>