Maven 核心插件配置和使用

Maven 本质上是一个插件执行框架; 所有工作都由插件完成。

Maven插件库

Maven 插件 可以很好的辅助构管理和构建项目。

Spring Boot 项目若出现找不到 spring-boot-maven-plugin 插件,可在项目的 pom 文件里指定插件库或在 Maven 的 settings.xml 文件里统一设置。

项目 pom.xml 中添加:

1
2
3
4
5
6
7
<pluginRepositories>
<pluginRepository>
<id>alimaven spring plugin</id>
<name>alimaven spring plugin</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</pluginRepository>
</pluginRepositories>

Maven settings.xml 中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<profiles>
<profile>
<id>spring plugins</id>
<activation>
<jdk>spring plugins</jdk>
</activation>
<pluginRepositories>
<pluginRepository>
<id>spring plugins</id>
<name>Spring plugins</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>

Maven核心插件

maven-compiler-plugin

maven-compiler-plugin:用于编译项目的源代码。

有时,您可能需要将某个项目编译为与当前使用的版本不同的版本。 javac 可以使用 -source 和 -target 接受这样的命令。 编译器插件也可以配置为在编译期间提供这些选项。

1
2
3
4
5
6
7
8
9
10
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>

maven-source-plugin

maven-source-plugin:创建当前项目源文件的 jar 存档。 默认情况下,jar 文件是在项目的目标目录中创建的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.0</version>
<!--打源码包-->
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<!--输入到指定位置-->
<outputDirectory>/absolute/path/to/the/output/directory</outputDirectory>
<finalName>filename-of-generated-jar-file</finalName>
<attach>false</attach>
</configuration>
</plugin>

生成的 jar 文件将由 finalName 的值加上“-sources”来命名,如果它是 main 来源。否则,如果它是 test 源,它将是 finalName 加上“-test-sources”。它将在指定的 outputDirectory 中生成。 attach 参数指定是否将 java 源附加到项目的工件列表中。

maven-resources-plugin

maven-resources-plugin:处理将项目资源复制到输出目录的操作。有两种不同的资源:main 资源和 test资源。不同之处在于,主资源是与主源代码关联的资源,而测试资源与测试源代码关联。因此,这允许分离主要源代码及其单元测试的资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!--打包资源文件-->
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
<!-- 复制配置文件 -->
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<!-- 复制配置文件到指定目录 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/application*.properties</include>
<include>**/application*.yml</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/config</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

资源插件处理将项目资源复制到输出目录的操作。有两种不同的资源:主要资源和测试资源。不同之处在于,主资源是与主源代码关联的资源,而测试资源与测试源代码关联。

因此,这允许分离主要源代码及其单元测试的资源。

从2.3版开始,这个插件使用Maven过滤共享组件来过滤资源。

maven-war-plugin

maven-war-plugin:WAR 插件负责收集 Web 应用程序的所有工件依赖项、类和资源,并将它们打包到 Web 应用程序存档中。

官方文档:Apache Maven WAR Plugin

如果不是初始化的创建的 Spring Boot 项目,是对工程进行改造成面的Spring Boot项目,可能会报 缺少 web.xml 文件的错误, 添加如下插件。

1
2
3
4
5
6
7
8
9
<!-- 打war包,排除web.xml,使用java config -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

maven-surefire-plugin

maven-surefire-plugin:是个测试框架,在构建生命周期的测试阶段用于执行应用程序的单元测试。

要求:Maven 3.2.5 和 JDK 1.8 或更高版本。

1
2
3
4
5
6
7
8
9
<!--忽略Test-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>

官方参考

  1. Apache Maven Project:Available Plugins

Maven 核心插件配置和使用

http://blog.gxitsky.com/2022/07/09/Maven-plugin/

作者

光星

发布于

2022-07-09

更新于

2023-03-06

许可协议

评论