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>