读者指南

目的:为了更好地理解Maven插件

参考文档:菜鸟教程 https://www.runoob.com/maven/maven-tutorial.html 

 

Maven是什么?

apache项目,纯java开发,基于POM(Project object model),管理项目的构建、报告、文档。 
 
Maven的原则
1、约定优于配置,Maven约定的项目目录结构如下图
2、父POM为子POM提供默认值,查看默认配置的方法 mvn help:effective-pom 
 

 

 

POM描述

POM使用xml文件描述,文件名pom.xml,其内容包括以下几个方面(按个人理解的划分,非标准官方说法)

POM版本号(POM模型的版本,不同于POM描述的具体内容。类似于 类和对象的关系),

项目ID(项目的唯一标志),

父POM信息(每一个POM都有一个父POM,即便没有显式声明),

依赖信息(所依赖的项目的标志信息),

依赖仓库(查找依赖的仓库地址),

插件信息(构建用到的插件),

插件仓库(查找插件的仓库地址),

构建信息(源代码和资源的路径、目标文件名称和路径),

POM配置信息(变量)。

 

各部分所使用的标签如下: 

* POM版本号:

<modelVersion>4.0.0</modelVersion>

* 项目ID:

<groupId>cn.kyh</groupId>
<artifactId>helloplugin</artifactId>
<version>1.0-SNAPSHOT</version>

* 父POM信息:

```
<parent>
<artifactId />
<groupId />
<version />
<!-- 父项目的pom.xml文件的相对路径,默认值是../pom.xml。Maven首先在relativePath,然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
<relativePath />
</parent>
```

* 依赖信息

```
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
```

* 依赖仓库

```
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
```

* 插件信息

```
<build>
<plugins>
<plugin>
<groupId>cn.kyh</groupId>
<artifactId>helloplugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
```

* 插件仓库

```
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>
</pluginRepositories>
```

* 构建结果信息

```
<build>
<sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory>
<outputDirectory>C:\MVN\project\target\classes</outputDirectory>
<testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory>
<resources>
<resource>
<mergeId>resource-0</mergeId>
<directory>C:\MVN\project\src\main\resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<mergeId>resource-1</mergeId>
<directory>C:\MVN\project\src\test\resources</directory>
</testResource>
</testResources>
<directory>C:\MVN\project\target</directory>
<finalName>project-1.0</finalName>
</build>
``` 

* POM配置信息 

<profiles>
      <profile>
          <id>test</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.test.properties</echo>
                             <copy file="src/main/resources/env.test.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
</profiles>
View Code

 

 

常用Maven命令:

mvn clean 清理生成的文件

mvn compile 编译源代码

mvn package 打包

mvn install 把项目安装到本地仓库