准备工作:
一、下载
Maven URLS:
Home Page:https://maven.apache.org/
Downloads:https://maven.apache.org/download.html
Release Notes:https://maven.apache.org/docs/history.html
Mailing Lists:https://maven.apache.org/mail-lists.html
Source Code:https://git-wip-us.apache.org/repos/asf/maven.git
Issue Tracking:https://issues.apache.org/jira/browse/MNG
Wiki: https://cwiki.apache.org/confluence/display/MAVEN/
Available Plugins:https://maven.apache.org/plugins/index.html
二、安装与基础配置
安装过程可分为设置环境变量、eclipse中设置maven两步,具体如下。
1、设置环境变量:
下载的maven解压后只是apache-maven-3.5.0目录,repository-maven3.5.0是自己新建的空文件夹,作为本地仓库用。
新加系统变量:MAVEN_HOME=D:\Program Files (x86)\Maven\apache-maven-3.5.0
在PATH系统变量追加:.;%MAVEN_HOME%\bin;
cmd测试成功:
2、Eclipse中设置Maven
低版本的eclipse可能没有集成Maven 插件,所以Windows——>Preferences可能根本找不到Maven 选项,在此分享一个4.5版本的eclipse,感觉非常不错:
链接:http://pan.baidu.com/s/1mh78tWO 密码:zz11
(1)、选择Windows——>Preferences——>Maven——Installations——>Add,选择maven 的安装目录。添加后选择自己刚加的Maven 。注意,点击Finish 之前不忘点击右下角的Apply !
(2)、设置本地仓库。
默认下,maven 的本地仓库为系统盘下的:C:\Users\Administrator\.m2\repository。在这里,为了设置为自定义的位置(图1中的repository-maven3.5.0文件夹),先修改安装目录中config 子目录下的settings.xml文件:
修改settings.xml 中的<localRepository>元素值:
<localRepository>D:\Program Files (x86)\Maven\repository-maven3.5.0</localRepository>
之后,在eclipse 中设置Maven 的User Settings:Browse——>Update Settings——>Apply——>Finish.
至此,maven安装与基础配置就完成了,虽然本地仓库中暂时没有任何文件,但再新建maven工程后,会自动下载一些插件与依赖到本地仓库。
三、Eclipse 新建Maven 工程
1、创建步骤:
new——>Project——>Maven——>Maven Project——>User default workspace location——>Next——>Next——>填写groupId 、artifactId、version(会以groupId.artifactId作为默认)——>Finish.
说明:groupId 为项目组,命名支持包名的形式,如:com.testMaven,此形式在文件系统中的表现和包的表现是一样的,都生成包含的目录结构;artifactId 为当前java项目(非此maven项目)的实际名称,version为此java项目的版本。后面其他项目对该项目的引用都是这三个参数决定的。
2、查看工程目录:
注意到默认的JRE 为1.5 版本!
3、了解pom.xml 文件基础设置
<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>TestMaven</groupId>
<artifactId>FirstRunning</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>FirstTimeRunning</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>firstTimeRunningName</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
上面除了<build>元素是自己后面加上去的,其他的都是默认生成的。
此处了解2点:
<packaging>元素值:jar|war|pom。jar:此项目进行maven install 时会打成.jar包;war:会打成.war包,区别是它可包含web相关的文件,如html文件,js文件等;pom:此项目包含多个子模块项目。
Maven 3.3以上对应的jdk 必须1.7及以上,所以就算不配置<build>元素增加maven-compiler-plugin插件,此项目也无法运行(也不能通过Build path 改变JRE 的方式解决,因为无法改变)。
4、发布此项目到本地仓库
发布步骤:debug|run——>maven install
之后会发现maven从远程仓库下载了许多文件,完成后查看本次仓库,发现项目打包,仓库下多了许多文件,且包含刚maven install 的项目组TestMaven。
5、可能发生的错误:No compiler is privided...
错误信息:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
原因:
没有配置build增加maven编译插件(maven-compiler-plugin)依赖。
解决:
增加如上的build基础配置,其中source与target的值为指定使用的编译器版本,即jdk版本。之后工程目录上右键——>Maven——>Update Project.重新maven install 。
6、运行项目
若要运行项目,而不是发布进本地仓库,则和运行普通java项目没区别:项目根目录右键——>Debug|Run as——>Java Application.
7、测试项目
对Maven 项目而言,第6步的运行项目没什么意义,因为运行项目必然有主函数,而Maven项目一般只是某个大型项目的一个子模块,只是一些类或接口,所以并不能直接运行。但要测试这些类或接口的功能是否正确时,我们应该怎么做呢?
刚接触Maven,学习了两种基础方法:
(1)、通过Junit 测试;
(2)、通过Maven test 测试。
(详细查看:http://blog.youkuaiyun.com/qq_19865749/article/details/77609494)
首先,看看自动生成的被测试的java文件(src/main/java下的App.java)与自动生成的用于测试的测试类(src/test/java下的AppTest.java)文件。
App.java:
为了测试,自己新加了一个plus函数
package mypakage.firstrunning;
/**
* Hello world!
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
public int plus(int n1,int n2){
return n1+n2;
}
}
AppTest.java
在里面新加了两条打印语句,真正提供给我们测试的只是testApp方法。
package mypakage.firstrunning;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
public AppTest( String testName )
{
super( testName );
}
public static Test suite()
{
System.out.println("测试类suite方法");
return new TestSuite( AppTest.class );
}
public void testApp()
{
App app = new App();
System.out.println("新建被测试对象完成");
assertTrue( app.plus(1, 2)==3 );
}
}
注:可见是通过断言语句来判断App 的类功能是否正确。
(1)、通过Junit 测试:
步骤:项目根目录右键——>Debug As ——Junit Test
结果:
(2)、通过Maven test 测试:
步骤:项目根目录右键——>Debug As——>Maven test
结果:
比较两种方式发现,Junit 测试结果清晰明了,Maven test 测试则是每次都重新构建了一次,且结果不直观。
最后,改变pom.xml等与工程的maven配置相关的文件,一定要执行项目右键——>Maven——>Update Project!
另外,时刻提醒自己尽可能多看官网的资料,比百度来的更加有意义!
后面章节将加深对Maven 的了解。