构建配置基础
build 元素配置项目构建行为,包括目录、资源、插件等。
build 基础结构
XML
<build>
<!-- 目录配置 -->
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<outputDirectory>target/classes</outputDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<!-- 最终产物名称 -->
<finalName>${project.artifactId}-${project.version}</finalName>
<!-- 资源配置 -->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<!-- 插件配置 -->
<plugins>
...
</plugins>
</build>
目录配置
默认目录(约定)
| 配置项 | 默认值 |
|---|---|
| sourceDirectory | src/main/java |
| testSourceDirectory | src/test/java |
| outputDirectory | target/classes |
| testOutputDirectory | target/test-classes |
| directory | target |
自定义目录示例
XML
<build>
<sourceDirectory>src/java</sourceDirectory>
<testSourceDirectory>test/java</testSourceDirectory>
<outputDirectory>build/classes</outputDirectory>
</build>
不推荐修改默认目录,遵循约定更便于维护。
资源过滤
启用资源过滤
XML
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering> <!-- 启用变量替换 -->
</resource>
</resources>
</build>
资源文件中使用变量
properties
# application.properties
app.name=${project.name}
app.version=${project.version}
build.time=${maven.build.timestamp}
定义属性
XML
<properties>
<app.env>dev</app.env>
</properties>
资源文件中使用:
properties
environment=${app.env}
过滤示例结果
XML
原始:app.name=${project.name}
过滤后:app.name=My Application
排除/包含文件
XML
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>**/*.jpg</exclude>
<exclude>**/*.png</exclude>
</excludes>
</resource>
</resources>
</build>
测试资源配置
XML
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
finalName 配置
XML
<build>
<!-- 自定义最终产物名称 -->
<finalName>my-app-production</finalName>
</build>
<!-- 输出:target/my-app-production.jar -->
默认 build 配置
超级 POM 提供默认配置:
text
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${artifactId}-${version}</finalName>
</build>
要点总结
- build 配置构建目录、资源、插件
- 默认目录遵循约定,不建议修改
- filtering=true 启用资源变量替换
- includes/excludes 控制资源文件范围
- finalName 自定义最终产物名称
📝 发现内容有误?点击此处直接编辑