Maven配置笔记

android-m2e插件与maven

自定义用户配置路径

不管插件还是maven,默认的用户配置路径是统一的:${user.home}/.m2/settings.xml

但是插件可以通过eclipse设置用户配置的路径(配置方法参考《ADT+Android-m2e环境搭建》);而maven不能永久指定,只能在每次使用mvn命令时加上"-s 新路径"参数。

依赖

如果使用android-m2d,在eclipse中写好依赖配置(<dependency>),保存之后就会自动去仓库下载该插件。如果找不到就会用红线标出。

使用maven,只有在编译的时候才会去检查依赖。

修改本地仓库默认路径

打开${M2_HOME}/conf/settings.xml,可以找到这句被注释的配置:

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

将/path/to/local/repo替换为自己的路径即可。

如果使用android-m2e插件,直接在eclipse中设置即可。

配置代理仓库(私有库)的位置

代理仓库的配置可以放在pom.xml中,但放在用户配置中可以省去很多麻烦。配置好代理仓库后,本地工程依赖的构件都将从配置指定的远程仓库下载。但请注意,此配置仅用于下载构件,无法通过此配置发布构件。

配置文件内容参考:

...
     <profiles>
          <profile>
               <id>repository</id>
               <repositories>
                    <repository>
                         <id>REPOSITORY-ID</id>
                         <url>REPOSITORY-URL</url>

                         <releases>
                              <enabled>true</enabled>
                         </releases>

                         <snapshots>
                              <enabled>true</enabled>
                         </snapshots>
                    </repository>
               </repositories>
          </profile>
     </profiles>

     <activeProfiles>
          <activeProfile>repository</activeProfile>
     </activeProfiles>
...

将以上配置添加到用户配置中,有几个重要元素

REPOSITORY-ID:远程仓库id

REPOSITORY-URL:指定远程仓库的url

<releases>:是否启用发布构件的下载

<snapshots>:是否启用快照构件的下载。对于快照版本,如果链接的是中央仓库,由于快照版本不稳定,所以一般会推荐禁用快照版本的下载。但对于代理仓库,在多人合作开发的时候快照版本是有必要开启的。

对于<snapshots>元素,可以通过<updatePolicy>为其指定检查快照版本的策略。

默认情况下,maven每天检查一次快照版本的更新。<updatePolicy>的值有:

daily:每天检查一次,默认

never:从不检查

always:每次构建都会检查

interval:X 每隔X分钟检查一次,X为任意整数。

<snapshots>
	<enabled>true</enabled>
	<updatePolicy>always</updatePolicy>
</snapshots>

发布构建所需的配置

远程仓库配置

该配置必须放在pom.xml中。在pom.xml中指定发布版和快照版仓库的位置:

<distributionManagement>
     <repository>
          <id>发布版仓库</id>
          <name>发布版仓库名称</name>
          <url>发布版仓库url</url>
     </repository>

     <snapshotRepository>
          <id>快照版仓库</id>
          <name>快照版仓库名称</name>
          <url>快照版仓库url</url>
     </snapshotRepository>
</distributionManagement>

id和url构成了远程仓库的唯一标识,name只是方便阅读。

配置认证信息

该配置要放在用户或全局配置中:

<servers>
     <server>
         <!-- 需要认证的仓库id -->
          <id>发布版仓库id</id>
          <username>admin</username>
          <password>123456</password>
     </server>
     <server>
          <id>快照版仓库id</id>
          <username>admin</username>
          <password>123456</password>
     </server>
</servers>

需要注意的是,认证信息中的<id>应该对应在pom.xml中配置的仓库<id>。

依赖管理

对于Jar的依赖

如果使用了android-m2e插件,无需自行下载和添加jar到classpath,只需在pom.xml中配置好依赖(<dependencies>),之后maven会增加一个Maven Dependencies:

&middot;

然后就可以在代码中引用了。

对于库工程的依赖

同jar一样,直接在<denpencies>中配置好了。虽然执行maven命令可以直接编译通过,但是ADT本身不支持从Maven仓库中直接引用。因此不得不将库工程下载到workplace,导入eclipse,然后设置为library,再让自己的工程引用该library。

发布jar到本地仓库

工程中依赖的jar包,在中央仓库上不一定有自己想要的版本,可以将项目组所需的版本上传到代理仓库,个人的话在本地仓库安装一份也可以。

比如我们要基于API 11进行编译,需要android-11/android.jar,那么进入到${ANDROID_HOME}/platforms/android-11,执行下面的命令:

mvn install:install-file -Dfile=android.jar -DgroupId=com.google.android -DartifactId=android -Dversion=3.0 -Dpackaging=jar

如此,在无需pom.xml文件的情况下将jar包发布到本地仓库中。这样我们就可以在pom.xml中配置新的android依赖。

对于install-file,各参数的含义非常好理解,其中-Dfile是将要发布到仓库的包的位置,剩余的则是maven坐标以及打包类型。

发布库工程到本地仓库

我们自己写的库工程,将<packaging>改为apklib,执行install命令就好了。

以support-v7为例,操作步骤如下:

1. 用SDK Manager将support-v7下载到本地;

2. 将${ANDROID_HOME}/extras/android/support/v7/appcompat代码导入eclipse,将工程转为maven工程;

3. 将工程依赖的两个jar包先安装到本地仓库,进入${ANDROID_HOME}/extras/android/support/v7/appcompat/libs目录:

mvn install:install-file -Dfile=android-support-v7-appcompat.jar -DgroupId=com.google.android -DartifactId=android-support-v7-appcompat -Dversion=r7 -Dpackaging=jar

mvn install:install-file -Dfile=android-support-v4.jar -DgroupId=com.google.android -DartifactId=support-v4 -Dversion=r7 -Dpackaging=jar

4. 修改pom.xml文件,增加对上面两个jar包的依赖:

<dependency>
	<groupId>com.google.android</groupId>
	<artifactId>android-support-v7-appcompat</artifactId>
	<version>r7</version>
</dependency>

<dependency>
	<groupId>com.google.android</groupId>
	<artifactId>support-v4</artifactId>
	<version>r7</version>
</dependency>

5. 执行命令:mvn clean install

注意,再添加这两个依赖的时候,<scope>最好不要设置为provided。使用默认的compile可以使得这两个jar在依赖工程中可见,这样就无需再引用这两个jar

其他的库工程发布方法同上,接着是修改需要依赖support-v7的工程的pom.xml文件,增加依赖:

<dependency>
	<groupId>com.google.android</groupId>
	<artifactId>support-v7-appcompat</artifactId>
	<version>r7</version>
	<type>apklib</type>
</dependency>

此时执行mvn clean install即可。

上面只是演示如何发布一个库工程,实际对于support-v7,可以不用建立maven工程,采用下面的方法更加简洁:

1. 进入${ANDROID_HOME}/extras/android/support/v7/appcompat,将目录下所有文件打包为support-v7-appcompat.zip,名字可以任意;

2. 执行命令:

mvn install:install-file -Dfile=support-v7-appcompat.zip -DgroupId=com.google.android -DartifactId=support-v7-appcompat -Dversion=r7 -Dpackaging=apklib

接下来的步骤同上面的3、4、5。

pom中的<sdk>和platform-version关系

起初因为在同一份配置中要在两个地方配置sdk版本感到很迷惑,通过查看maven运行日志了解到其中的关系。

在编译android工程的过程中,会经过下面两个个重要的阶段:

android-maven-plugin:3.8.2:generate-sources

这一步就是将assert、res等资源文件打包。实际调用的android命令是aapt(Android Asset Packaging Tool)

该命令需要某个平台的android.jar包:

${ANDORID_HOME}/build-tools/android-xxx/aapt package -f --no-crunch -I, ${ANDORID_HOME}/platforms/android-xx/android.jar。

在pom.xml中,android-maven-plugin配置中的<platform>元素所指定的api level,对应的就是上面命令红色部分的值。意思就是在打包资源的时候,依赖哪个api level的jar包。


maven-compiler-plugin:3.1:compile

在这一步实际调用了javac命令来编译源码:

javac -target {VM_VERSION} -bootclasspath ${ANDROID_HOME}\platforms\android-xx\android.jar -d bin {TARGET}

在pom.xml中,该阶段所依赖的配置便是<dependency>中配置的sdk版本。

这两个位置所指定的android sdk版本应当一致,只不过在<dependency>中必须使用version name,因为这是maven坐标的要求。而在android-maven-plugin的配置中却不支持version name,必须使用api level。

如果中央仓库没有合适的编译版本,自己上传一个到代理仓库,或者就安装在本地仓库,安装方法同安装依赖jar包的方法相同。安装过后修改<dependency>中的<version>值即可。

参考

Android 自动编译、打包生成apk文件 1 - 命令行方式

在Maven项目中使用Android Support Library

[置顶] Maven如何手动添加依赖的jar文件到本地Maven仓库

Maven配置笔记,布布扣,bubuko.com

时间: 2024-11-05 02:26:53

Maven配置笔记的相关文章

齐鲁云门户springMVC+facade+maven配置笔记

门户分为四层结构(controll->facade->service->dao),采用springMVC框架,facade设计模式,用maven管理jar包.分为1个父项目,和7个子项目 举例dao层代码 public interface IUserGuideDao extends GenericDao<SysNews>{ public static final String DAO_NAME="userGuideDao"; } @Repository(v

Eclipse从零配置Maven环境 笔记

Eclipse配置maven环境笔记 转载请注明:http://blog.csdn.net/kisssun0608/ 1.      下载maven http://maven.apache.org/download.cgi,选择的是最新的apache-maven-3.3.3-bin.zip ; 2.      解压后放在指定目录,如D:\\dep_tools\ ; 3.      配置maven的环境变量 4.      开始 -> 计算机 ->右击,属性–> 高级系统设置–> 

Log4j2 配置笔记(Eclipse+maven+SpringMVC)

Log4j2相关介绍可以百度看下,这里只注重配置Log4j2 能够马上跑起来: 1.pom.xml文件中添加Log4j2的相关Maven配置信息 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.1</version> &l

Maven学习笔记之——仓库(中)

Maven学习笔记之--仓库(中) 1.    远程仓库的配置 当出现默认的中央仓库无法满足我们的需求或者连接不上的时候.我们可以通过POM文件来指定远程仓库. <repositories> <repository> <id>jboss-maven2-release-repository</id> <name>JBoss Repository</name> <url>http://repository.jboss.org/

Maven学习笔记

Maven学习笔记 Maven是项目管理工具 1. 安装Maven 在apache官网(http://maven.apache.org/download.cgi) 下载apache-maven-3.3.3-bin.zip和apache-maven-3.3.3-src.zip:解压,把bin的位置设在环境变量里, 新建环境变量名:MAVEN_HOME 值:C:\Users\pengtao.yue\apache-maven-3.3.3\bin 在path中加入:%MAVEN_HOME% 在DOS中输

Maven学习笔记之——仓库(上)

Maven学习笔记之--仓库(上) 1.    何为maven仓库 Maven可以在某一指定位置统一存放所有maven项目共享的构件.此指定位置就是maven仓库.实际的项目将不再自己存放其所依赖的构件.他们只需要声明这些依赖的坐标.在需要的时候就会自动根据坐标找到仓库中的构件.并使用他们. 仓库的意义:减少磁盘占用空间.去除大量重复的构件.尤其是项目越来越多.越来越大的时候.更便于统一管理所有控件. 2.    仓库的布局 任何一个构件都有其唯一的坐标.根据这个坐标可以定义其在仓库中的唯一存储

Maven学习笔记之——坐标和依赖(上)

Maven学习笔记之--坐标和依赖(上) 1.    Maven坐标概念 Maven通过构件的坐标来在Maven仓库中定位到具体的构件.Maven的坐标元素包括groupId.artifactId.versiion.packaging.classifier.Maven内置了一个中央仓库地址.需要时Maven会根据坐标到其中下载.具体关于中央仓库的介绍在后面. 2.    Maven坐标详解 比如下面一组坐标: <groupId>org.andy.items</groupId> &l

Maven学习笔记(1)之安装Maven

此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤: 1.下载Maven的最新版本,地址:http://maven.apache.org/download.cgi 2.将下载完成的压缩包放至D盘根目录(图方便,一会儿安装完再删就好) 3.在命令行上操作,进入到你想要安装的目录路径后敲:jar xvf 的命令来进行解压安装(请勿手动解压以省略此步) 4.配置环境变量 新建系统变量  MAVEN_HOME  变量值:D:\Java\apache-m

Maven学习笔记-使用Eclipse插件创建Java Webapp项目

使用Java的猿们,最多接触的大概就是web项目了吧?在学习Maven的过程中,首先当然就是创建一个webapp项目. 自己在尝试的过程中,碰到了很多的问题.我把详细的过程都记录下来,用以今后参考. 步骤: 如果未搭建好Maven开发环境,请参考前一篇:Maven学习笔记--环境搭建 打开Eclipse, 菜单栏选择File -> new -> other,在弹出的对话框中找到Maven Project. 在弹出的新建Maven项目的对话框中,不要勾选第一项"Create a sim