Maven项目搭建与插件使用指南
立即解锁
发布时间: 2025-08-18 02:07:11 阅读量: 2 订阅数: 8 

### Maven项目搭建与插件使用指南
#### 1. Maven插件特性
Maven插件声明通常会指定`groupId`、`artifactId`和`version`,这和依赖的声明很相似,它们的处理方式也相同,都会被下载到本地仓库。在指定插件时,`groupId`和`version`是可选参数。如果不声明`groupId`,Maven会查找指定`artifactId`且`groupId`为`org.apache.maven.plugins`或`org.codehaus.mojo`的插件;如果不声明`version`,Maven 2.0.9之前的版本会尝试下载最新版本,而从2.0.9版本开始,大多数插件的版本在Super POM中被锁定,不会再自动下载最新版本。锁定插件版本有助于避免自动更新和不可重复的构建。
此外,Maven项目之外还有大量的插件可供使用,因为为Maven编写插件非常容易。
#### 2. Maven项目对象模型(POM)
Ant有一个默认名为`build.xml`的构建文件,用于指定构建任务和目标。而Maven有一个默认名为`pom.xml`的构建描述符,它是Project Object Model(POM)的缩写。与Ant不同,在Maven的项目描述符中,我们不指定具体要做的事情,而是指定项目本身的通用信息,例如:
```xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.manning.junitbook</groupId>
<artifactId>example-pom</artifactId>
<packaging>jar</packaging>
<version>2.0-SNAPSHOT</version>
</project>
```
这个`pom.xml`看起来很简单,那么Maven如何仅用这么少的信息就能构建我们的源代码呢?答案在于`pom.xml`的继承特性:每个简单的`pom.xml`都从Super POM继承了大部分功能,就像Java中每个对象都从`java.lang.Object`对象继承某些方法一样,Super POM为每个`pom.xml`赋予了Maven的特性。
Maven的`pom.xml`还可以相互继承,就像Java中的一些类可以作为其他类的父类一样。例如,如果我们想将上述`pom.xml`作为父POM,只需将其`packaging`值改为`pom`,并在父POM中定义子模块,如下所示:
```xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.manning.junitbook</groupId>
<artifactId>example-pom</artifactId>
<packaging>pom</packaging>
<version>2.0-SNAPSHOT</version>
<modules>
<module>example-module</module>
</modules>
</project>
```
子POM的`pom.xml`如下:
```xml
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.manning.junitbook</groupId>
<artifactId>example-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<artifactId>example-child</artifactId>
</project>
```
需要注意的是,由于子POM继承了父POM,因此不需要指定`groupId`和`version`,Maven会认为它们与父POM相同。
一个POM可以从其父POM继承以下元素:
- 依赖
- 开发者和贡献者
- 插件列表
- 报告列表
- 具有匹配ID的插件执行
- 插件配置
这些元素在父POM中指定后,会自动在子POM中生效。
#### 3. 搭建Maven项目
##### 3.1 安装Maven
安装Maven需要以下三个步骤:
1. 从[http://maven.apache.org/](http://maven.apache.org/)下载最新版本,并将其解压到你选择的目录(例如,Windows上的`C:\maven`或UNIX上的`/opt/maven`)。
2. 定义一个`M2_HOME`环境变量,指向你安装Maven的目录。
3. 将`M2_HOME\bin`(UNIX上为`M2_HOME/bin`)添加到`PATH`环境变量中,以便在任何目录下都可以使用`mvn`命令。
首次执行插件时,请确保你的网络连接正常,因为Maven会自动从网络下载插件所需的所有第三方JAR文件。
##### 3.2 创建Maven项目
导航到`c:\junitbook2\`目录(这是我们的工作目录),在命令行中输入以下命令:
```bash
mvn archetype:create -DgroupId=com.manning.junitbook -DartifactId=maven-sampling -DarchetypeArtifactid=maven-artifact-mojo
```
按下回车键并等待相关工件下载完成后,会创建一个名为`maven-sampling`的目录,其中包含项目的目录结构。该Maven插件会根据目录结构的约定创建一个新项目,并生成一个带有主方法的`App.java`类和一个对应的`AppTest.java`单元测试文件。
##### 3.3 项目描述符(pom.xml)
Maven插件还会为我们生成一个`pom.xml`文件,其内容如下:
```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.manning.junitbook</groupId>
<artifactId>maven-sampling</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>maven-sampling</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>
</project>
```
这个`pom.xml`文件包含了以下重要信息:
| 元素 | 描述 |
| ---- | ---- |
| `modelVersion` | 当前使用的POM模型版本,目前仅支持4.0.0 |
| `groupId` | 项目的
0
0
复制全文
相关推荐










