Maven:通过命令行定义SuperPOM属性project.build.directory

omvjsjqw  于 2023-08-03  发布在  Maven
关注(0)|答案(1)|浏览(66)

我正在用GitLab CI在一个docker文件上构建我的maven项目。我想用一个“编译”阶段和一个“测试”阶段来配置我的管道。要做到这一点,我需要将属性project.build.directory(定义在maven super POM中)设置到docker缓存中,这样编译后的工件就不会在作业之间丢失。
project.build.directory是预定义的maven属性。因此,我认为我可以用CL参数-Dproject.build.directory=anotherDir来定义它。这不起作用,我的项目仍然被构建到默认目录target
如果我修改了POM

<properties>
    <buildDir>target</buildDir>
</properties>
<build>
    <directory>${buildDir}</directory>
</build>

字符串
并调用mvn clean install -DbuildDir=customTargetDir,我的项目按照预期构建到customTargetDir
为什么会这样?我真的看不出有什么区别。在这两种情况下,我定义了现有属性的值。

vsikbqxv

vsikbqxv1#

抱歉,回复晚了,给未来的读者:)
Maven不提供从CLI覆盖project.build.directory(默认为target)的功能,因此像-Dproject.build.directory这样的smth是不可能的。
但是,这段代码的作用是:

<build>
    <directory>${buildDir}</directory>
</build>

字符串
正是您想要的-它改变了项目的输出目录,所以是的,它做的正是预期的。

相关问题