全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-23 6 分钟 ✍️ juanwangdev

构建配置基础

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>

目录配置

默认目录(约定)

配置项默认值
sourceDirectorysrc/main/java
testSourceDirectorysrc/test/java
outputDirectorytarget/classes
testOutputDirectorytarget/test-classes
directorytarget

自定义目录示例

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 自定义最终产物名称
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 项目信息配置
下一篇 → 继承与聚合
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码