第四章同Eclipse合作合作
4.1 先谈谈合作意向
前面我们用手动方式折腾出了一个HelloWorld,出是出来了,可是太麻烦。
咱不记得命令了怎么办?还有那些插件坐标,哪个记得住呢?要命的是编写代码,用的文档编辑器,一点都不专业,也没点点提示。以前用的Eclipse编代码多好呀,哪里处理问题,里面就提示错误;对不记得的API,也能随时提供帮助。
能不能将对Maven的操作同Eclipse结合起来,在Eclipse上用图形化界面和菜单式命令,协作咱完成对Maven的操作呢?
有需求就有市场,有市场,就有人挖掘并且解决。而且Eclipse本身就是一个开源精神好强烈的开源工具,能很好的接纳集成第三方的插件。
有了这些前提,m2eclipse出来了!
4.2 安装配置M2Eclipse插件
1、下载Eclipse,建议下载开发JavaEE版本的Eclipse IDE,因为我们后面最终是要开发Web应用,下载连接为:
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2
打开页面如图:
结合整个环境,我这下载的是 Windows 64-bit(注意是Mars Packages的),eclipse-jee-mars-2-win32-x86_64.zip
2、使用解压工具解压eclipse-jee-mars-2-win32-x86_64.zip文件,点击解压目录下eclipse目录下的eclipse.exe文件,启动Eclipse如图:
3、点击菜单栏中的 window->Preferences选项,打开Preferences窗口,如图:
很凑巧呢,该版本的Eclipse里面,内置了Maven呢,也就是m2eclipse插件。接下来咱们就没必要自己再去下载m2eclipse插件了,咱只要配置配置就可以使用Maven了。
4、展开上图中Maven选项,选中其中的Installations,显示如图:
右边显示的是当前Eclipse内置的Maven。为了整合我们前面自己安装的最新Maven,继续下面步骤。
5、点击上图右边的 Add按钮,弹出New Maven Runtime窗口,选择咱们装的Maven,如图:
在Installation home后面,选择咱们以前安装的Maven目录,点击Finish按钮,回到Preferences窗口,并且选中刚刚添加的Maven。
保险起见,点击 Preferences窗口中的Apply按钮,保存刚刚的操作。
6、选中Preferences中Maven里面的User Setting,显示如图:
在Global Setting框中选中咱们安装的Maven下的settings.xml
在User Setting框中选中咱们自己登录用户目录下的settings.xml
一般是会默认显示的,如果不正常,自己手动选择。
图片上显示的是我电脑上的位置文件。
7、点击OK完成设置
8、点击菜单中的 File->Import选项,打开Import窗口如图:
9、选择上图里面的 Maven->Existing Maven Projects选项,点击Next按钮,在弹出的Import Maven Projects窗口中,选中咱们前面创建的Maven工程目录,如图:
10、点击 Finish按钮,咱们就可以在Eclipse中看到以前好不容易手动折腾出来的Maven工程,如图:
11、在Eclipse的工程上,右击鼠标,选择Run As->Maven test,就可以完成咱们一起mvn test命令完成的运行测试代码,在Eclipse的Console窗口中可以看到结果。如图:
4.3 创建一个Maven项目
1、点击Eclipse的File->New->Others,或点击File菜单下的快捷图标,打开New窗口如图:
2、选择Maven中的Maven Project,点击Next 按钮,打开New Maven Project窗口,不做改动,继续点击Next 按钮,出现如图界面:
列表中显示的是当前常用的archetype插件的groupId,artifactId和版本号,archetype插件,是用来帮咱们创建工程的,这功能我们在前面手动创建工程的时候使用过。
3、选中1.1版本的quickstart插件,如上图选项。点击Next 按钮,出现下一个窗口如下图。在窗口中输入咱们新创建工程的groupId、artifactId、packageName和选择版本。
4、点击 Finish 按钮,创建出一个新的Maven项目,如图。
咱们就可以分别在src\main\java中和src\test\java中,添加咱们的Java源代码和测试代码。
为了方便,我这里直接将上次手动敲的HelloWorld.java和TestHelloWorld.java复制过来,同时把pom.xml中jUnit的版本改成4.7(默认生成的是3.8.1)
到现在为止,咱们就用Eclipse+M2Eclipse插件,完成了Maven项目的创建和相关代码的编写。
4.4 构建Maven项目
现在工程创建好,相关的代码也写好了,接下来就是程序员的老套路:清理旧操作、编译源代码、运行测试案例、打包安装了。
以前咱们是用的mvn clean|compile|test|install命令实现的,现在就在Eclipse中,点击命令选项就行。
鼠标右击左边的工程,点击Run As->Maven clean|test|install,如下图,就可以完成该工程清理、测试和打包安装。
当然,这里面缺少一个编译(compile)的选项。
这也是正常的,Eclipse一般都是自动编译的,而且在运行test之前,它都会把所有代码重新编译一遍。
如果我们一定要明确的做编译的动作,也是可以的。选择上图Run As后面的Maven build...选项,(注意,是后面带了...的选项哦),弹出如下图,在Goals后面的输入框中输入compile命令,点击Run按钮,就会执行编译操作。
到现在为止,咱们就把项目构建相关的动作,都折腾完了。这比以前手动使用mvn命令方便多了吧^_^
那以前咱们有生成过站点文档和API Doc文档啥的呢,在Eclipse+m2eclipse中又怎么体现呢?
不急,咱们下节慢慢道来。
4.5 基于M2Eclipse完成所有工作
前面我们有基于Eclipse+m2eclipse完成了工程的基本构建,接下来咱们研究一下怎么样生成相关的文档和报告。
在第三章小结的时候,咱们有体验到这么点:Maven是依赖插件去做具体的事情的。比如创建工程、生成站点和生成JavaDoc API文档,这些都是有专门的插件。
咱们要做的事情,是告诉Maven使用哪个插件,Maven自动协调对应插件去完成特定的工作任务。
在第三章手动操作的时候,咱们是用mvn命令,后面指定插件的坐标(没有自定,mvn自动找仓库中最新的)来告知mvn做什么事,那在Eclipse+m2eclipse环境下,咱们通过什么样的方式,可以告诉maven使用哪些插件做哪些事情呢?
pom.xml骨架文件,对,pom.xml骨架文件就是做这事情的。咱们要做的就是在pom.xml文件中,按它的语法要求指定相关的插件坐标,maven在运行的时候,自动使唤插件完成对应的任务。
那怎么在pom.xml中描述这些插件的坐标,怎么样启动maven,让它可以协调指定的插件做事呢?
别急别急,写配置文件和启动maven,那不是分分钟钟的事情呀^_^
咱们先了解一下常用的插件有哪些,以及怎么样确定它们的坐标,这样才好在pom.xml中描述吧。
插件名称 | 用途 | 来源 |
maven-clean-plugin | 清理项目 | Apache |
maven-compile-plugin | 编译项目 | Apache |
maven-deploy-plugin | 发布项目 | Apache |
maven-site-plugin | 生成站点 | Apache |
maven-surefire-plugin | 运行测试 | Apache |
maven-jar-plugin | 构建jar项目 | Apache |
maven-javadoc-plugin | 生成javadoc文件 | Apache |
maven-surefire-report-plugin | 生成测试报告 | Apache |
稍稍列举几个吧,更多的咱们在后面的附录里面列出。
接下来咱们在咱们的工程里面,体验体验生成站点、运行测试、生成javadoc和生成测试报告插件的使用。
咱们一个个的来,先折腾一下运行测试。
1、在Maven Repository(仓库)中找到surefire插件的坐标。
用浏览器打开http://mvnrepository.com/,在search输入框中输入surefire-plugin,点击search如下图:
点击maven-surefire-plugin,查看它的所有版本信息,点击想使用的版本(咱们这里使用的2.19.1),会显示该版本的groupId、artifactId等坐标信息。如图:
2、在pom.xml中添加surefire插件描述。
在Eclipse中打开pom.xml文件,在pom.xml后面添加一个build标签,里面添加surefire插件的描述信息,具体内容如下,被粗体显示的为新添加的内容。
<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>cn.com.mvnbook.demo</groupId>
<artifactId>MvnBookTP02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MvnBookTP02</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<!--设置包含的测试类 -->
<includes>
<include>******</include>
</includes>
<!-- 设置不进行测试类 -->
<excludes>
<exclude>Test*</exclude>
</excludes>
<!-- 跳过测试阶段,測試類写的有问题也会出错,一般不推荐-->
<!--<skip>true</skip> -->
</configuration>
</plugin>
</plugins>
</build>
</project>
上面内容中,用红色标记的,就是咱们要配置的surefire-plugin的描述,具体的描述方式和说明,上面有注释了,这里就不累赘了。
3、启动Maven,运行test
鼠标右键工程,选择Run As->Maven test。Maven会自动启动插件进行编译和测试。如果第一次运行测试,我们在控制台会发现如下下载信息,说明Maven将用到咱们刚刚配置的surefire-plugin运行测试代码。
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ MvnBookTP02 ---
[INFO] Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.19.1/maven-surefire-common-2.19.1.pom
好了,咱们用surefire-plugin体验了一下,在pom.xml中添加插件,并且启动maven执行插件的过程,解析来我们再重复前面的故事,再折腾一下javadoc-plugin,用来生成javadoc API帮助文档。
1、查找合适版本的坐标。
在mvnrepository.com中,类似查找surefire-plugin的方式,输入javadoc-plugin查询,找到自己中意版本的坐标信息。
2、将javadoc-plugin添加到pom.xml中
在pom.xml的plugins标签之间,添加如下内容:
<!-- 项目API doc报告-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
<configuration>
<aggregate>true</aggregate>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<!--执行maven test的时候运行插件-->
<phase>test</phase>
</execution>
</executions>
</plugin>
这里面有javadoc-plugin的坐标信息外,还有其它配置信息,咱们先不管。中间有红色标记的信息,它的意思是当我们点击Run As->Maven test命令菜单的时候,执行javadoc插件,生成doc帮助文档。
3、运行javadoc-plugin插件,查看doc ap文档
右键工程 点击 Run As->Maven test,maven自动调用插件生成API文档。在工程的target目录下,会自动产生一个apidocs目录,里面就生成的API文档。
前面介绍了2个插件的坐标查找和配置,后面关于站点和测试报告的,咱们就不再做过程的累赘了,直接贴插件描述的配置,里面有关键点的中文注释,大家把它们移到咱们自己的pom.xml中,测试运行一把,就可以看到对应的执行结果。
剩下插件描述内容:
<!-- 构建项目站点报告插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0-beta-3</version>
<configuration>
<!-- 配置站点国际化 -->
<locales>zh_CN</locales>
<!-- 输出编码 -->
<outputEncoding>GBK</outputEncoding>
</configuration>
</plugin>
<!-- 单元测试报告html -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.12.2</version>
<configuration>
<showSuccess>true</showSuccess>
</configuration>
<executions>
<execution>
<id>test-report</id>
<phase>test</phase>
</execution>
</executions>
</plugin>
<!-- 测试覆盖率的报告 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
<executions>
<execution>
<id>cobertura-report</id>
<goals>
<goal>cobertura</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
4.6 小结
通过本章的内容介绍,咱们完全可以将用手动搞定的事情,在Eclipse+m2eclipse环境下搞定了。整个操作的思路和目的都是一样的,只是有点不同的是操作形式图形化了,更加方便了,这也是咱们研究m2eclipse的初衷不是。
当然,还有一个变化,那就是咱们是用的pom.xml事先描述好要使用的插件,maven在执行相关命令的时候,自动再协调相关插件,完成对应任务。
也就是说,我们后期还会有怎么样准确描述插件的标记的研究,那是后话。现在咱们只要将在配置过程中,用中文注释过的标记理解清楚就行,后面的后面在去弄,一步步来嘛 ^_^
版权所有,转载请友情注明 相关系列视频 http://cyedu.ke.qq.com