就像Make的Makefile,Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。
一个基本的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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.juvenxu.mvnbook</groupId> <artifactId>hello-world</artifactId> <name>Maven Hello World Projects</name> <version>1.0-SNAPSHOT</version> <description><span style="font-family: Arial, Helvetica, sans-serif;">Hello World Projects</span><span style="font-family: Arial, Helvetica, sans-serif;"></description></span> </project>
项目的主代码和测试代码不同。主代码会被打包到最终的构件(如jar)中,而测试代码只在运行测试时用到,不会被打包。
默认情况下,Maven假设项目主代码位于src/main/java目录。
例如,在该目录下创建文件com/juvenxu/mvnbook/helloworld/HelloWorld.java,代码如下:
package com.juvenxu.mvnbook.helloworld; public class HelloWorld{ }
代码编写完毕后,使用Maven进行编译,在项目根目录下运行命令mvn clean compile。
clearn告诉Maven清理输出目录target/
compile告诉Maven编译项目主代码
Maven首先执行了clean:clean任务,删除target/目录。(默认情况下,Maven构建的所有输出都在target/目录中);接着执行resource:resource任务;最后执行compiler:compile任务,将项目主代码编译至target/classes目录。
主代码与测试代码应该分别位于独立的目录中。Maven项目中默认的主代码目录是src/main/java,对应地,Maven项目中默认的测试代码目录是src/test/java。
将项目编译,测试之后,下一个重要步骤就是打包。默认打包类型是jar,命令mvn clean package:
Maven会在打包之前执行编译,测试等操作。jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个名为hello-world-1.0-SNAPSHOT.jar的文件.该文件也位于target/输出目录中,它是根据artifactID-version.jar规则进行命名的,如有需要,还可以使用finalName自定义该文件的名称。
执行mvn clean install:
在打包之后,又执行了安装任务install:install。该任务将项目输出的jar安装到了Maven本地仓库中。
为了生成可执行的jar文件,需要借助maven-shade-plugin。
File > Import > Maven > 存在的项目。pom.xml永远在项目的根目录下。
在Maven项目或者pom.xml上右击,在弹出快捷菜单中选择Maven命令。
可自定义命令。