赞
踩
针对整个项目的所有情况都有效。
- <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">
- ...
- <build>…</build>
- ...
- </project>
针对不同的profile配置。
- <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">
- ...
- <profiles>
- <profile>
- <!– "Profile Build" contains a subset of "Project Build"s elements –>
- <build>…</build>
- </profile>
- </profiles>
- ...
- </project>
- <build>
- <!-- 指定默认的 Maven 构建目标。当运行 mvn 命令时,将执行指定的目标(用不到) -->
- <defaultGoal>install</defaultGoal>
- <!-- 指定 Maven 构建输出的目录路径,下列是默认值-->
- <directory>target</directory>
- <finalName>${artifactId}-${version}</finalName>
- <!-- 指定源代码文件的目录路径 -->
- <sourceDirectory>src/main/java</sourceDirectory>
- <!-- 指定脚本文件的源代码目录路径(用不到) -->
- <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
- <!-- 指定test的源代码目录路径 -->
- <testSourceDirectory>src/test/java</testSourceDirectory>
- <!-- 指定编译后的类文件输出的目录路径 -->
- <outputDirectory>target/classes</outputDirectory>
- <!-- 指定编译后的test类文件输出的目录路径 -->
- <testOutputDirectory>target/test-classes</testOutputDirectory>
- <!-- 配置项目的资源目录, 例如配置文件、静态资源等 -->
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <!-- 可以有占位符,并替换占位符,即下面的${application.environment} -->
- <filtering>true</filtering>
- <includes>
- <include>bootstrap.properties</include>
- <include>bootstrap-${application.environment}.properties</include>
- </includes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <!-- 没有占位符 -->
- <filtering>false</filtering>
- <includes>
- <include>banner.txt</include>
- <include>logback-spring.xml</include>
- </includes>
- </resource>
- </resources>
- <!-- 配置项目的test资源目录, 例如配置文件、静态资源等 -->
- <testResources>
- <testResource>
- <directory>src/test/resources</directory>
- </testResource>
- </testResources>
- <filters>
- <filter>filters/filter1.properties</filter>
- </filters>
- <!-- 插件版本管理 -->
- <pluginManagement>
- <plugins>
- <!-- Springboot项目打包插件,生成JAR包 -->
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>${spring-boot.version}</version>
- </plugin>
- <!-- Maven编译插件 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven-compiler-plugin.version}</version>
- </plugin>
- </plugins>
- </pluginManagement>
- ...
- </build>

- <build>
- ...
- <resources>
- <resource>
- <targetPath>META-INF/plexus</targetPath>
- <filtering>false</filtering>
- <directory>${basedir}/src/main/plexus</directory>
- <includes>
- <include>configuration.xml</include>
- </includes>
- <excludes>
- <exclude>**/*.properties</exclude>
- </excludes>
- </resource>
- </resources>
- <testResources>
- ...
- </testResources>
- ...
- </build>

用于包含或者排除某些资源文件:
- <build>
- ...
- <plugins>
- <!-- 插件的坐标。此处引用的 maven-compiler-plugin 插件不是第三方的,是一个 Maven 自带的插件。 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
- <extensions>false</extensions>
- <inherited>true</inherited>
- <!-- configuration 标签:配置 maven-compiler-plugin 插件 -->
- <configuration>
- <!-- 具体配置信息会因为插件不同、需求不同而有所差异 -->
- <classifier>test</classifier>
- <source>1.8</source>
- <target>1.8</target>
- <encoding>UTF-8</encoding>
- <dependencies>...</dependencies>
- <executions>
- <execution>
- <id>pre-process-classes</id>
- <!-- phase : 关联的生命周期阶段 -->
- <phase>compile</phase>
- <!-- goals/goal:关联指定生命周期的目标 -->
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>pre-process</classifier>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>

用于指定使用的插件:
详见:maven用久后必须了解的phase、goal参数及生命周期概念_maven goal参数-CSDN博客
通过 pluginManagement
标签管理起来的插件就像 dependencyManagement
一样,子工程使用时可以省略版本号,起到在父工程中统一管理版本的效果。
- <build>
- ...
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.2</version>
- <executions>
- <execution>
- <id>pre-process-classes</id>
- <phase>compile</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>pre-process</classifier>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
- ...
- </build>

pluginManagement标签存放着几个极少用到的插件:
- maven-antrun-plugin
- maven-assembly-plugin
- maven-dependency-plugin
- maven-release-plugin
被springboot-dependenciens管理的插件:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
上面是父工程的pom配置,在子pom中,我们只需要做配置即可,不需要版本号:
- <build>
- ...
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- ...
- </build>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。