POM.XML文件
就像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>- <project>是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,这些元素不是必须的。
- 根元素下的子元素<modelVersion>指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0
- <groupId><artifactId><version>这三个元素定义了一个项目基本的坐标,在Maven中,任何的jar,pom或者war都是以基于这些基本的坐标进行区分的。
- <groupId>定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp。
- <artifactId>定义了当前Maven项目在组中唯一的ID。在前面的groupId为com.googlecode.myapp的例子中,可能会为不同的子项目(模块)分配不同的artifactId,如myapp-util,myapp-domain,mmyapp-web等。
- <version>制定了当前项目的版本。
- <name>元素声明了一个对于用户更为友好的项目名称,但这不是必须的。
主代码
项目的主代码和测试代码不同。主代码会被打包到最终的构件(如jar)中,而测试代码只在运行测试时用到,不会被打包。
默认情况下,Maven假设项目主代码位于src/main/java目录。
例如,在该目录下创建文件com/juvenxu/mvnbook/helloworld/HelloWorld.java,代码如下:
package com.juvenxu.mvnbook.helloworld;
public class HelloWorld{
}在绝大多数情况下,应该把项目主代码放到src/main/java目录下,而无需额外的配置,Maven会自动搜寻该目录找到主代码。另外来说,项目中Java类的包名都应该基于项目的groupId和artifactId。
代码编写完毕后,使用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。
m2eclipse
导入Maven项目
File > Import > Maven > 存在的项目。pom.xml永远在项目的根目录下。
创建Maven项目
运行mvn命令
在Maven项目或者pom.xml上右击,在弹出快捷菜单中选择Maven命令。
可自定义命令。
本文介绍Maven项目的核心配置文件pom.xml的结构及其用途,包括项目坐标、代码组织方式、编译、打包流程等关键信息。
2785

被折叠的 条评论
为什么被折叠?



