Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven mvn属性未被-D选项覆盖_Maven_Cmake_Protoc - Fatal编程技术网

Maven mvn属性未被-D选项覆盖

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<

在我的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</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