Maven mvn属性未被-D选项覆盖
在我的pom.xml中,我有一个Maven mvn属性未被-D选项覆盖,maven,cmake,protoc,Maven,Cmake,Protoc,在我的pom.xml中,我有一个protocPath的属性: <properties> <protobuf.version>3.6.1</protobuf.version> <build.root.dir>${project.basedir}/..</build.root.dir> <build.output.dir>${build.root.dir}/build<
protocPath
的属性:
<properties>
<protobuf.version>3.6.1</protobuf.version>
<build.root.dir>${project.basedir}/..</build.root.dir>
<build.output.dir>${build.root.dir}/build</build.output.dir>
<protocPath>/usr/local/bin/protoc</protocPath>
</properties>
$ENV{PROTOC}
解析为某些装载路径,即非/usr/local/bin/PROTOC
我得到了这个错误。为什么它试图在/usr/local/bin/protoc
中使用protoc
,而不是在$ENV{protoc}
中使用
[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (default) on project ntnxdb-client-proto: An error occurred while invoking protoc: Error while executing process. Cannot run program "/usr/local/bin/protoc": error=2, No such file or directory -> [Help 1]
编辑
我已更改为以下内容,但仍然存在相同的错误:
add_custom_target(
mvn-opt ALL
WORKING_DIRECTORY ${NTNX_TOP_SOURCE_DIR}
COMMAND mvn
-DPROTOCPATH=$ENV{PROTOC}
verify
)
Maven属性确实区分大小写,因此必须使用
-DprotocPath=…
来覆盖该值
在Maven文档中的属性部分有一个关于这一点的明确提示:
注意:虽然环境变量本身在上不区分大小写
Windows中,属性的查找区分大小写
(黑体字是我的)
您还可以使用maven编译器插件的verbose
设置轻松验证这一点:
mvn clean compile -Dmaven.compiler.verbose=true
vs
只有前者有效。“PROTOC_PATH”与“protocPath”不同。@JFMeier它也区分大小写吗?我不完全确定,但我会在这两个地方以完全相同的方式编写它。
mvn clean compile -Dmaven.compiler.verbose=true
mvn clean compile -Dmaven.compiler.VERBOSE=true