项目构建工具Maven:(4)Maven与Eclipse整合

作者:陆金龙    发表时间:2017-01-14 21:50   


目录

1.为eclipse安装插件

2. Maven 环境配置

3.导入Maven项目

4. 在eclipse中执行maven命令

5. 新建Maven工程

6. Maven工程的聚合

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的版本号:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.9</version>
    <scope>test</scope>
</dependency>

5.6 添加项目依赖

依赖HelloFriend项目(HelloFriend项目同时又依赖了Hello项目)

在<dependencies>节点下添加以下配置:

<dependency>
    <groupId>com.klfront.maven</groupId>
    <artifactId>HelloFriend</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>

使用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可以实现对所有项目的安装。