一、环境准备: 1、在Eclipse上安装好Maven并配置环境变量 2、在Eclipse上安装m2eclipse插件。
二、新建一个JAVA项目,项目结构如下图:
三、Maven项目核心是pom.xml。POM(Project Object Model,项目对象模型),代码如下:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lcb.mvnbook</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
</project>
可以看到pom.xml的根元素是project元素,其中最重要元素分别是groupId、artifactId、version,这三个元素定义了一个项目基本的坐标,在Maven里,任何的jar、pom、war都是以这些基本的坐标区分的。
四、编写主代码HelloWorld.java
package main.java.com.lcb.mvnbook;
public class HelloWorld {
public String sayHello(){
return "Hello";
}
public static void main(String[] args) {
System.out.println(new HelloWorld().sayHello());
}
}
在绝大多数情况下,应该把项目主代码放到src\main\java目录下(遵循Maven的约定),而无须额外的配置,Maven会自动搜寻该目录找到项目主代码。
五、编译
主代码编写完后,打开cmd命令,找到项目的根目录运行命令:mvn clean compile
可以看到编译成功:
六、测试
首先为项目添加JUnit依赖。Maven的核心插件之一-----compile插件默认只支持编译JAVA1.3,因此需要配置该插件使其支持JAVA5,在pom.xml修改后如下:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
<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>
</plugins>
</build>
</project>
然后和前面编译一样,在cmd命令框中找到项目根目录,运行命令:mvn clean test 输出如下
七、打包
将项目编译和测试之后,接下来就是项目的打包,同样输入命令:mvn clean package
可以在项目的target文件夹中看到打包的JAR文件,如图红色框。
八、运行
输出了JAR,但是只有将构件下载到本地仓库后,才能由所有Maven项目使用。HelloWorld中有一个main方法,默认打包生产的JAR文件是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开JAR文件中的META-INF/MANIFEST.MF文件,无法看到Main-Class一行)。为了生成可执行的JAR文件,需要借助maven-shade-plugin,增加配置到pom.xml中后,代码如下:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lcb.mvnbook</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
<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>main.java.com.lcb.mvnbook.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
同样,在CMD命令框中输入mvn clean install
然后看到target文件夹有如下JAR
前者是带有Main-Class可以运行的JAR,后者是原始的JAR
然后在CMD中进行运行该JAR,在项目根目录下运行:java -jar target/hello-world-1.0-SNAPSHOT.jar,会输出hello