Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制 项目。
一、安装Maven
1、http://maven.apache.org/download.cgi下载地址:
补充一句:.tar.gz和.zip这两种文件的区别:其实这两个压缩文件里面包含的内容是一样的,只是压缩格式不一样,tar.gz格式的文件比zip文件要小不少。tar.gz压缩格式用于unix的操作系统,而zip用于windows的操作系统,但在windows系统中用WinRar工具同样可以解压缩tar.gz格式的,所以下载时不用担心或是疑惑什么!
2,、解压文件
3、配置环境变量
M2_HOME : D:\WorkApp\apache-maven-3.3.9
PATH : %M2_HOME%\bin;
4:验证安装是否成功
在命令行上输入 : mvn -version; 回车,如看到下面信息表示安装成功:
二、创建第一个Maven项目
1,新建如下目录结构
其中:src/main/java 目录包含了项目的源代码,src/test/java 目录包含了项目的测试代码,pom.xml是项目的项目对象模型(Project Object Model or POM)。
2:POM
pom.xml 文件是maven对一个项目的核心配置,这个文件将包含你希望如何构建项目的大多数配置信息。POM大而复杂,但你不用全部去了解,只要使用一些常用的配置就可以了。下面列出这个POM的内容:
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ionesmile.mavenhello</groupId>
<artifactId>mavenhello</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<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-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.ionesmile.mavenhello.SayHello</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
所有的Maven项目都必须配置这四个配置项:
<modelVersion>4.0.0</modelVersion> <!-- 当前POM模型的版本,相对于Maven2和Maven3,这里只能是4.0.0 -->
<groupId>com.ionesmile.mavenhello</groupId> <!--groupId指的是项目名的项目组,默认就是包名-->
<artifactId>mavenhello</artifactId> <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
<version>SNAPSHOT-0.0.1</version> <!--version指的是版本,这里使用的是Maven的快照版本-->
// 可选项
<packaging>jar</packaging> <!--packaging项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。-->
3、编写主代码
在src ---> mavenHello目录下:
package com.ionesmile.mavenhello;
public class SayHello {
public String sayHello() {
return "Hello, Maven";
}
public static void main(String[] args) {
SayHello h = new SayHello();
System.out.println(h.sayHello());
}
}
编写完成后,在DOS下使用 mvn clean compile命令进行编译,然后会出现一堆输出。等待一下,直到出现 BUILD SUCCESSFUL
4,测试代码
在test ---> mavenHello目录下:package com.ionesmile.mavenhello;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SayHelloTest {
@Test
public void testSayHello(){
SayHello sayHello = new SayHello();
String result = sayHello.sayHello();
assertEquals("Hello, Maven", result);
}
}
编写完成后,运行 mvn clean test 命令。
注:执行Test需要依赖junit框架,上面pom.xml中已经加入,见<dependencies>标签。
另外在这里如果人品不好,可能会出现两个问题,我在配置的时候出现了第二个问题,第一个问题也提出来,避免遇到坑。
问题一:
第二个问题:
出现如下异常:BUILE FAILURE
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
解决办法,详见:http://stackoverflow.com/questions/29147329/unable-to-create-a-new-maven-hello-world-project
5、打包和运行
执行 mvn clean package 命令,会生成\target\mavenhello-1.0-SNAPSHOT.jar文件.
执行 mvn clean install 命令,会将该jar文件导入到本地仓库。文件路径为:仓库路径 + groupId + artifactId,如:D:\WorkApp\AppWorkSpace\MavenSpace\com\ionesmile\mavenhello\mavenhello\1.0-SNAPSHOT\mavenhello-1.0-SNAPSHOT.jar
这里我的仓库位置为D:\WorkApp\AppWorkSpace\MavenSpace,是因为我改动了apache-maven-3.3.9\conf\settings.xml,改动如下:
如果不改动,就是上面默认的路径:${user.home}/.m2/repository,如:C:\Users\Administrator\.m2\repository
6,在控制台输出“Hello, Maven”
从安装maven到运行Hello Maven的完整步骤到这里就结束了,非常感谢下列资料提供的指导。
参考图书:《Maven实战》
参考网址:http://wentao365.iteye.com/blog/903396/