更改 pom 文件中特定配置文件的目标目录

Change target directory for a specific profile in the pom file

在 pom 文件中,我们可以为特定配置文件覆盖 project.build.directory

<profile>
  <id>foo</id>
  <build>
    <directory>${project.basedir}/foo_directory/target</directory>
  </build>
</profile>

我的问题是,依赖于 project.build.directory 的其他目录会怎样?

例如这两个:

<outputDirectory>${project.build.directory}/classes</outputDirectory>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>

如果我 运行 具有 foo 配置文件的 maven 并且我使用 outputDirectorytestOutputDirectory maven 会考虑新的目标目录吗?

是的,这应该有效。

您可以通过 运行 mvn help:effective-pommvn help:effective-pom -P foo 来验证这一点,以将 effective-pom 与默认配置文件和 foo 配置文件进行比较。

然后您可以验证配置 属性 ${project.build.directory} 是否已替换为正确的值。

作为测试,我在 pom.xml 中配置了以下内容:

    <profiles>
        <profile>
            <id>foo</id>
            <build>
                <directory>${project.basedir}/foo_directory/target</directory>
            </build>
        </profile>
    </profiles>

而默认的有效pom变为:

  <build>
    <sourceDirectory>D:\TestProject\src\main\java</sourceDirectory>
    <testSourceDirectory>D:\TestProject\src\test\java</testSourceDirectory>
    <outputDirectory>D:\TestProject\target\classes</outputDirectory>
    <testOutputDirectory>D:\TestProject\target\test-classes</testOutputDirectory>

并且 foo 有效 pom 变为:

  <build>
    <sourceDirectory>D:\TestProject\src\main\java</sourceDirectory>
    <testSourceDirectory>D:\TestProject\src\test\java</testSourceDirectory>
    <outputDirectory>D:\TestProject\foo_directory\target\classes</outputDirectory>
    <testOutputDirectory>D:\TestProject\foo_directory\target\test-classes</testOutputDirectory>