Maven:如何从命令行更改目标目录的路径?
(我希望在某些情况下使用另一个目标目录)
你应该使用配置文件。
<profiles>
<profile>
<id>otherOutputDir</id>
<build>
<directory>yourDirectory</directory>
</build>
</profile>
</profiles>
然后使用你的配置文件启动 Maven
mvn compile -PotherOutputDir
如果你真的想从命令行定义你的目录,你可以这样做(绝对不推荐):
<properties>
<buildDirectory>${project.basedir}/target</buildDirectory>
</properties>
<build>
<directory>${buildDirectory}</directory>
</build>
然后这样编译:
mvn compile -DbuildDirectory=test
那是因为使用-Dproject.build.directory
无法更改目标目录。
-Dproject.build.directory
是要使用的,那么它是可用的;这是解决-Dproject.build.directory
问题的一种变通方法。此外,使用第一种解决方案,您只需指定路径一次,就不会在启动命令行时在目录名称中出现拼写错误,即使您从IDE中工作,也可以轻松使用此解决方案等。 - Colin Hebertsettings.xml
激活配置文件的方法,而不仅仅是命令行,以实现更高的可移植性? - RogueColin是正确的,应该使用配置文件。然而,他的答案在配置文件中硬编码了目标目录。一种替代方案是添加一个像这样的配置文件:
<profile>
<id>alternateBuildDir</id>
<activation>
<property>
<name>alt.build.dir</name>
</property>
</activation>
<build>
<directory>${alt.build.dir}</directory>
</build>
</profile>
这样做会导致将构建目录更改为alt.build.dir属性所给定的任何内容,该属性可以在POM中、用户设置中或命令行中指定。如果该属性不存在,则编译将在正常的目标目录中进行。
-Dalt.build.dir=~/mytarget
等同于使用其他属性的 -D
? - Michael Scheper
target/
中的IDE,比如Eclipse,我希望能够在命令行中进行构建,而不会让这两个进程互相干扰。 - john sullivansrc/it/my-integration-test-project/pom.xml
,而不必在源代码树中创建target
目录。因为这将在包含项目的验证阶段运行集成测试时被复制。 - Mike Samuel