更改 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 并且我使用 outputDirectory
或 testOutputDirectory
maven 会考虑新的目标目录吗?
是的,这应该有效。
您可以通过 运行 mvn help:effective-pom
和 mvn 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>
在 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 并且我使用 outputDirectory
或 testOutputDirectory
maven 会考虑新的目标目录吗?
是的,这应该有效。
您可以通过 运行 mvn help:effective-pom
和 mvn 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>