项目构建工具Maven:(4)Maven与Eclipse整合
目录
1.为eclipse安装插件
1.1 安装zest插件
实现pom.xml文件设计窗口编辑
1.2 安装m2插件
1.选择help菜单> Install New Software.然后弹出安装的对话框;
2.复制http://m2eclipse.sonatype.org/sites/m2e到名为“Work with”的输入框,然后回车,显示
如下图
3.点击下一步,就可以安装了,然后点击next,勾选同意Licence,安装,最后重启eclipse。
1.3 安装m2e-extras插件
实现支持svn、cvs等支持
2.Maven 环境配置
2.1 配置使用新装的Maven插件,不要使用默认自带的。
2.2 配置maven的settings.xml
3.导入Maven项目
3.1 导入maven工程
import菜单选择maven,然后选择 Existing Maven Projects
选择Hello和HelloFriend工程,按提示继续。
导入时会自动识别项目的pom.xml文件。
maven项目中有一个Maven的依赖。
3.2 配置项目pom.xml
在根目录pom.xml中加入如下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
3.3 maven工程中的依赖
工程依赖而非jar包依赖。在编译打包时,只要编译聚合的工程,被依赖的工程会自动编译。
4.在eclipse中执行maven命令
4.1执行列表中的命令
在pom.xml上右键-选择run as,发现多了一列maven命令。
4.2 执行compile命令
执行Maven build...,在Goals栏输入命令compile,点run按钮即可。
问题:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
解决:eclipse菜单- Window - Preferences- Java - Installed JREs 将配置的JRE定位到
JDK,即由C:\Program Files\Java\jre1.8.0_92改为C:\Program Files\Java\jdk1.8.0_92
4.3 执行install命令
在HelloFriend中执行Maven install命令。
问题:
报错:Failed to execute goal on project HelloFriend: Could not resolve dependencies for project com.klfront.maven:HelloFriend:jar:0.0.1-SNAPSHOT: Could not find artifact com.klfront.maven:Hello:jar:0.0.1-SNAPSHOT
提示未能找到Hello.jar包,事实上是因为Hello工程还没有安装的仓库。
解决:先安装依赖项目,然后安装聚合项目。
先在Hello项目的pom.xml右键菜单--run as下执行maven install命令。
然后在HelloFriend项目的pom.xml右键菜单--run as下执行maven install命令,成功。
5.新建Maven工程
5.1 新建命令中选择:Maven Project
5.2使用默认的存储位置:
5.3 选择创建maven项目的模板
选择原型 archetype:maven-archetype-quickstart
问题:
没有模板可选
解决:
cmd命令行下直接执行(前提是maven已经配置环境变量):mvn archetype:generate 指令,等待几分钟从网络中下载文件后,重新使用eclipse创建maven project,即可成功。
如果下载卡在Maven: Generating project in Interactive mode
加个参数 -DarchetypeCatalog=internal 让它不要从远程服务器上取catalog:
mvn archetype:generate -DarchetypeCatalog=internal
-DgroupId=com.klfront.maven.parent
-DartifactId=parent
-Dpackage=com.klfront.maven
-Dversion=1.0-SNAPSHOT
但如果你想生成struts2项目框架的话,则有可能找不到相应的archetype,如:
解决的方法是添加原型或模板目录,选择【Window】-【Preferences…】- 【Maven】-【archetypes】,选择【Add Remote Catalog…】按钮,在打开的窗口中输入如图所示内容:
Catalog File:http://repo1.maven.org/maven2/archetype-catalog.xml
单击【Verify…】检验该文件是否可行,如上图所示,查找到archetypes的数量为2227个。
单击【OK】退出窗口。
配置好之后,创建项目 过滤条件选择org.apache.maven.archetype
5.4 设置坐标
5.5 修改项目配置
修改JRE System Library,改为maven使用的jdk。如果是设置的值是JRE,将配置的JRE定位到JDK。参见4.2节。
修改pom.xml中junit的版本号:
5.6 添加项目依赖
依赖HelloFriend项目(HelloFriend项目同时又依赖了Hello项目)
在<dependencies>节点下添加以下配置:
使用Alt F5 命令更新Maven工程,就能在Maven Dependencies中看到新的依赖工程了。
依赖传递:在pom.xml中虽然只是添加了对HelloFriend的依赖,但在依赖列表中已经同时显示了Hello和HelloFriend两个工程,说明MakeFriend会根据HelloFriend的依赖关系自动依赖Hello工程。
依赖冲突:项目重复依赖相同的jar包时,遵循最近优先原则。如果A依赖B,B依赖C,如果B和C都依赖junit的jar包,但版本不一致,则A会使用B项目中的junit。
依赖继承:创建一个类型为pom的Parent工程,在pom.xml中设好常用配置。在Hello中的pom.xml中,设置继承Parent,这样就可以使用Parent工程中的配置项了。
注意:需先install Parent工程,然后依次install各子工程,因为子工程依赖父工程。
创建Parent项目,pom.xml文件中的packaging节点配置为:pom
Hello项目中继承Parent:
HelloFriend项目继承Parent:
6.Maven工程的聚合
每次修改项目之后,需要依次install所有工程,比较麻烦。聚合可以解决这个问题,实现一次Build,一次install。
在父工程pom文件中添加module配置。
这样在Parent工程的pom.xml上Run As,执行install可以实现对所有项目的安装。