Maven的坐标包括:groupId、artifactId、version、packaging、classifier。

groupId:定义当前maven项目隶属的实际项目;

artifactId:定义实际项目中的一个maven项目(模块);

version:定义当前所处的模板;

packaging:定义maven项目的打包方式;

依赖对应的元素Dependencies是dependency的负数形式,非常形象,它可以包含一个或者多个dependency。依赖也有它的一组子元素:

groupId、artifactId、version:依赖的基本坐标;

type:依赖的类型

scope:依赖的范围,用来控制依赖于编译classpath、测试classpath、运行classpath的关系,有compile、test、provided、runtime、import。

依赖是可传递的,如A->B,B->C,那么A->C。传递性依赖简化了依赖管理,但在带来好处的同时也给项目带来了很多隐性的依赖,也就是我们平时总会遇到的依赖冲突,经常需要排除依赖(exclusions)。

排查依赖最常用到的就是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>

更多相关文章

  1. ionic 打包android@6出现xml/network_security_config not found
  2. Android(安卓)Resource介绍和使用以及bug记录
  3. 【flutter】Running Gradle task 'assembleDebug' android 首次
  4. UE4-打包安卓报错 /Android/APK\gradle\rungradle.bat" :app:a
  5. Android(安卓)打包过程
  6. Hbuilder 云打包发布app教程 (Android)
  7. android实现gradle动态依赖打包
  8. 初学者之Android(安卓)HelloWorld项目
  9. [置顶] 实现android应用程序自动打包(Ant+proguard+签名)

随机推荐

  1. Android(安卓)的GUI 系统
  2. Eclipse安装Android教程
  3. Android(安卓)Makefile中是 如何识别 TAR
  4. android APP安装支持安装到SDCard
  5. [转]Android(安卓)技术专题系列之九 -- 图
  6. Android(安卓)移动平台概述
  7. android入门1:有关布局与activity数据传递
  8. Android(安卓)3D引擎汇总
  9. 【Android】Android和PHP开发最佳实践完
  10. 导入Android自带Sample工程出错解决(Erro