我正在用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
。
为什么会这样?我真的看不出有什么区别。在这两种情况下,我定义了现有属性的值。
1条答案
按热度按时间vsikbqxv1#
抱歉,回复晚了,给未来的读者:)
Maven不提供从CLI覆盖
project.build.directory
(默认为target
)的功能,因此像-Dproject.build.directory
这样的smth是不可能的。但是,这段代码的作用是:
字符串
正是您想要的-它改变了项目的输出目录,所以是的,它做的正是预期的。