Java 来自父POM的Maven PluginManagement变量绑定

Java 来自父POM的Maven PluginManagement变量绑定,java,maven,plugins,maven-plugin,grpc-java,Java,Maven,Plugins,Maven Plugin,Grpc Java,你能帮我理解为什么我不能把我的配置放在我的父母POM上吗 我有这个配置。当它在父POM中时,我的构建失败 因为错误地解析为: io.grpc:protoc-gen-grpc-java:1.23.0:exe:linux-x86_64 当它在我的POM中时,正确解析为 io.grpc:protoc-gen-grpc-java:1.23.0:exe:osx-x86_64 在本地POM中,我使用以下构建扩展: <build> <extensions>

你能帮我理解为什么我不能把我的
配置放在我的父母POM上吗

我有这个
配置。当它在父POM中时,我的构建失败 因为
错误地解析为:

io.grpc:protoc-gen-grpc-java:1.23.0:exe:linux-x86_64
当它在我的POM中时,
正确解析为

io.grpc:protoc-gen-grpc-java:1.23.0:exe:osx-x86_64
在本地POM中,我使用以下构建扩展:

<build>
    <extensions>
        <extension>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.5.0.Final</version>
        </extension>
    </extensions>
但是插件显示如何解决不正确的工件:

[INFO] --- protoc-jar-maven-plugin:3.8.0:run (generate-sources) @ recipe-order-processor ---
[INFO] Resolving artifact: com.google.protobuf:protoc:3.9.0:exe:linux-x86_64, platform: osx-x86_64

我怀疑这个问题是由于托管插件上的继承变量被绑定时引起的,但是我找不到任何Apache Maven对父POM上的
的“绑定顺序”的引用

为了获得
os.detected.classifier
以便在使用
os-maven-plugin
时正确解析,您需要将其用作插件而不是扩展。出于某种原因,如果将其用作父POM中的扩展,它将解析为编译该父POM的平台。请小心确保您的任何依赖项都不会从将
OSMaven插件
定义为扩展的父pom继承

文档中没有提到将父POM继承作为将
OSMaven插件配置为插件的理由,但下面介绍了如何配置


马文
os maven插件
1.6.1
初始化
发现

另外,如果我运行:
mvn clean compile
…在
protoc jar maven plugin
上构建失败。如果我运行:
mvnprotocjar
则插件正确解析;调用时,插件
中的变量已解析/绑定到(不正确的)
linux-x86\u 64
arch。
[INFO] ------------------------------------------------------------------------
[INFO] Detecting the operating system and CPU architecture
[INFO] ------------------------------------------------------------------------
[INFO] os.detected.name: osx
[INFO] os.detected.arch: x86_64
...
[INFO] os.detected.classifier: osx-x86_64
[INFO] --- protoc-jar-maven-plugin:3.8.0:run (generate-sources) @ recipe-order-processor ---
[INFO] Resolving artifact: com.google.protobuf:protoc:3.9.0:exe:linux-x86_64, platform: osx-x86_64
<plugin>
    <groupId>kr.motd.maven</groupId>
    <artifactId>os-maven-plugin</artifactId>
    <version>1.6.1</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>detect</goal>
            </goals>
        </execution>
    </executions>
</plugin>