我有一个带有模块的父项目。其中一个模块在其pom文件中声明了以下内容:
...
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.2.3.Final</version>
</extension>
</extensions>
</build>
...
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-tcnative</artifactId>
<version>${netty.tcnative.version}</version>
<classifier>${os.detected.classifier}</classifier>
</dependency>
</dependencies>
...
从父项目运行mvn package
时,将成功构建此项目。然后我想将这个子模块项目用作其他gradle项目中的依赖项,因此我将父项目安装到我的maven本地repo并在build.gradle文件中声明依赖项。
构建gradle项目时遇到此错误:
Could not resolve all dependencies for configuration ':runtime'.
> Could not find netty-tcnative-${os.detected.classifier}.jar (io.netty:netty-tcnative:1.1.33.Fork2).
Searched in the following locations: https://repo.grails.org/grails/core/io/netty/netty-tcnative/1.1.33.Fork2/netty-tcnative-1.1.33.Fork2-${os.detected.classifier}.jar
为什么${os.detected.classifier}
没有被评估?应该注意的是,${netty.tcnative.version}
被评估为父pom中定义的属性,因为它出现在正在寻找的jar路径中。
谢谢。
编辑:我认为这个问题可能是因为gradle引用了依赖项而maven没有被调用来运行os-maven-plugin来评估表达式。只是一个猜测。
答案 0 :(得分:0)
当我的POM包含一个父POM并将os.detected.classifier
定义为扩展名时,我已经看到正确解析os-maven-plugin
的问题。
您可以尝试将其配置为插件 https://github.com/trustin/os-maven-plugin#issues-with-eclipse-m2e-or-other-ides
<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>