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
| <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
| <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.21.0</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
|
官方参考
- Apache Maven Project:Available Plugins