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>

Maven Android使用一的更多相关文章

  1. myeclipse创建maven android项目

    一.搭建环境 1.安装android maven插件,我在网上找了半天.没有找到这个插件,于是选择了在线安装.选择myeclipse 的 [help]->[install form catalo ...

  2. Appium TestNg Maven Android Eclipse java简单启动实例

    环境准备 Eclipse + maven + appium + TestNg 确保已经在Eclipse 上面安装maven TestNg的插件 打开Eclipse,新建一个java项目,把项目转换成m ...

  3. Appium TestNg Maven Android Eclipse java自动化环境搭建

    1.环境准备 1)Eclipse + maven + appium + TestNg 确保已经在Eclipse 上面安装maven TestNg的插件 2)打开Eclipse,新建一个maven项目 ...

  4. 为android项目集成maven

    为什么要为android项目增加maven集成功能呢?这里我想到几个主要理由: 部署测试人员和开发人员的角色分离,让他们摆脱eclipse开发环境设置android sdk环境,直接在服务器上运行一个 ...

  5. Maven管理Android项目1

    maven-android-plugin网站:https://code.google.com/p/maven-android-plugin/wiki/GettingStarted   android ...

  6. 2015最流行的Android组件、工具、框架大全

    Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...

  7. Spring For Android初体验

    Spring For Android是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,这其中包括了你可以使用该项目提供的 RestTemplate来为你的Android客户 ...

  8. 最流行的android组件大全

    目录 [−] 工具和教程 UI组件 类库 游戏引擎 Android HTML5应用 Android 是目前最流行的移动操作系统(还需要加之一吗?). 随着新版本的不断发布, Android的功能也日益 ...

  9. maven学习笔记 1

    1    概述 1.1 Maven是什么 1.2 为什么要用Maven 2    怎么用Maven 2.1 Maven仓库 2.2 Maven安装 2.3 Eclipse插件 2.4 Maven常用命 ...

随机推荐

  1. paip.java 多线程参数以及返回值Future FutureTask 的使用.

    paip.java 多线程参数以及返回值Future FutureTask 的使用. 在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果. 所以run的返回值是vo ...

  2. atitit.解决net.sf.json.JSONException There is a cycle in the hierarchy

    atitit.解决net.sf.json.JSONException There is a cycle in the hierarchy 1. 环境:使用hibernate4跟个,,要不个哪的对象系列 ...

  3. paip.指针 引用 c++ java的使用总结.

    paip.指针 引用  c++ java的使用总结. ///////////////一般一个变量包括下面的信息 a.地址(指针)  b.命名(引用,别名)   c.变量内容.. 指针是一个变量的地址, ...

  4. SQL语句的基础

    注释语法:#注释语 一.T-SQL语句注意:1.语句写完后用"分号:"代表这一句结束2.列结束用逗号,最后一列写完不用写逗号3.符号一定是英文的 关键字:主键:primary ke ...

  5. fir.im Weekly - 新开发时代,每个人都在创造

    七夕纷纷扰扰地过去了,身边的程序员们依旧安静从容地写代码.可是满屏幕的"对象",不如身边一个对象(。・`ω´・)- 闲话说完,这周像往期一样为大家收集了一些优秀的 GitHub 资 ...

  6. 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法

    今天遇到了一个在servlet的service方法中获取ServletContext对象出现java.lang.NullPointerException(空指针)异常,代码如下: 1 //获取Serv ...

  7. DES加密 java与.net可以相互加密解密的方法

    我.net程序员.今天和java的童鞋交互,单点登录的操作.采用了如下的加密和解密的方式.经过验证,完美结合.通过这个方法可以实现java和C#相互加密与解密 并能保持解密出来一致. 废话少说,上代码 ...

  8. mysql 将时间戳直接转换成日期时间

    date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql>SELECT FROM ...

  9. php三种基础算法:冒泡,插入和快速排序法

    $array = array(2,3,5,6,9,8,1); //冒泡排序思想,前后元素比较 function sort_bulldle($array){ $num = count($array); ...

  10. LeetCode:Longest Substring Without Repeating Characters(最长不重复子串)

    题目链接 Given a string, find the length of the longest substring without repeating characters. For exam ...