工作需要,因为自己折腾的时候发现网上资料也不是很系统,所以记录下自己折腾的过程,,目前在我机器上是运行良好。同时首次发稿,排版或者各种不舒服,错误,见谅,同时不足之处谢谢指点。
一,准备工作,以及我的环境
OS: windows 8 中文版 , 64位
Jdk: 1.7.0_51, 64位 加环境变量
Maven: 3.2.3 加环境变量
eclipse + sdk : 我是去官网直接下的adt,adt版本是23.02. adt-bundle-windows-x86_64-20140702.zipzip解压开后查看的eclipse的版本是4.2.0,(.../eclipse/readme/readme_eclipse.html 查看版本),安装完成后发现版本变成4.3.2了,你说我怎么发现 的?因为原先开始的Juno变成了kepler了。
sdk: sdk设置环境变量。从adt-bundle的zip解压出的sdk 中,android sdk tools 版本也是23.0.2,因为adt有最新的23.0.3版本,不要在后续操作中更新该工具。
git: Git 1.9.2-preview 在(android + maven + eclipse 开发环境搭建(windows) 二) 中将会使用到的工具。
二,我们要做什么?
1,在eclipse中安装m2e插件。
2,在eclipse中安装m2e-android插件。
3,测试在eclipse中new一个maven android project是否可以正常run. 伴随着修复pom.xml在eclipse的报错修复。
4,测试在eclipse中import一个maven android project是否一切顺利.同样伴随着修复pom.xml在eclipse的报错修复(放到二中去讲)。
ok ,go
1,安装m2e之前,我们先要安装依赖,否则,直接安装m2e会报错。 打开eclipse . Help -> Install New Software... -> Add slf4j http://www.fuin.org/p2-repository/
只安装Maven osgi-bundles 的子项slf4j-api 1.6.6 。 然后就是next,next...安装完毕后restart eclipse,中间的警告什么的你可以读读什么意思就过吧。接下来正式安装m2e, Help -> Install New Software... -> Add m2e http://download.eclipse.org/technology/m2e/releases , 一路next .....restart eclipse .
我们稍微看下m2e有没有安装成功, Window -> Preferences 左侧有Maven 显示了么?有的话,说明我们安装成功了,然后我们配置下Maven本地仓库,当然你也可以用默认的,点击展开Maven, User Settings ,右侧User Settings ,点击Browse...找到你自己的settings.xml,ok以后,maven本地仓库就已经被你成功替换成自己存的地方了。
2.开始安装m2e-android. Help -> Install New Software... -> Add m2e-android http://rgladwell.github.com/m2e-android/updates/ 你只需要安装android for maven eclipse
然后就是一路next,直到重启eclipse,你会发现,juno变成kepler了。
3,现在我们的插件全部安装完毕,开始测试成果了。 鼠标右键 -> New -> Other -> Maven -> Maven project -> next
这里,开始出现错误,我们一个一个解决,android-maven-test] Unable to resolve target 'android-16' 因为我们下的adt中的sdk只带有20 w一个sdk,所以更新你的sdk,将16安装上,因为我有安装完全的sdk,所以我在图示位置改下sdk位置就可以了
到这里以后,我们发现项目目录结构变成这样了,同样的,我们下面还发现有2个error需要处理
2个错误的意思是什么呢,Description Resource Path Location Type
Plugin execution not covered by lifecycle configuration: com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.2:consume-aar (execution: default-consume-aar, phase: compile) pom.xml /android-maven-test line 39 Maven Project Build Lifecycle Mapping Problem
这个说的是什么生命周期问题,我理解的是将这个插件加入到生命mvn生命周期中,其实真正的具体意思我也不太明白,不误导大家,我们现在需要的是解决之,将如下代码加到我们的pom.xml文件中<pluginManagement><plugins>的节点下,ok,上代码,同时附上一段英文。以下是需要添加的代码。
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<versionRange>[3.8.0,)</versionRange>
<goals>
<goal>consume-aar</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
Location of this lifecycle-mapping in pom.xml is important, it must be declared in a pluginManagement
section that occurs immeadiately after the build section. It has to be in the root pom.xml file if you
have a large project tree.
现在,我们的pom.xml文件变成了这个样子
<?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.example.test</groupId>
<artifactId>android-maven-test</artifactId>
<version>0.01</version>
<packaging>apk</packaging>
<name>android-maven-test</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<platform.version> 4.1.1.4
</platform.version>
<android.plugin.version>3.8.2</android.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${platform.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<pluginManagement>
<plugins>
<span style="color:#ff6666;"><plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<versionRange>[3.8.0,)</versionRange>
<goals>
<goal>consume-aar</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</span>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>${android.plugin.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
</project>
保存pom.xml,pom文件不报错了,但是我们的项目还是有个大红叉的,那看第二个errors : Description Resource Path Location Type Project configuration is not up-to-date with pom.xml. Run Maven->Update Project or use Quick Fix. android-maven-test line 1 Maven Configuration Problem.嗯,让我们update project 或者 Quick fix 下项目,所以,照做。
ok,至此,项目不报错了,我们添加一个三方jar包试试吧,这里,我用的是 android-async-http
<dependency>
<groupId>com.loopj.android</groupId>
<artifactId>android-async-http</artifactId>
<version>1.4.6</version>
</dependency>
look,jar包被依赖进来了
至此,android + maven + eclipse 环境搭建成功,可以愉快的使用了,我在搭建过程中,也是不停的google,我会十分欣慰如果这篇文章能够帮到你。在android + maven + eclipse 开发环境搭建(windows) 二 中,我会详细讲解怎么导入一个mvn管理的android项目至eclipse中。有什么问题可以发邮箱shechaoqun@gmail.com,回复的慢也请见谅。
我不知道为什么我的xml代码贴上来是红色的。首次发博,海涵。