全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 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 自定义最终产物名称

📝 发现内容有误?点击此处直接编辑

← 上一篇 属性与变量替换
下一篇 → 继承与聚合
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库