未按预期评估 Maven 属性(os-maven-plugin)

Posted

技术标签:

【中文标题】未按预期评估 Maven 属性(os-maven-plugin)【英文标题】:Maven property not being evaluated as expected (os-maven-plugin) 【发布时间】:2015-09-03 12:21:26 【问题描述】:

我有一个带有模块的父项目。其中一个模块在其 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 路径中。

谢谢。

edit:我认为问题可能是因为 gradle 引用了依赖项,并且没有调用 maven 来运行 os-maven-plugin,它评估表达式。只是猜测。

【问题讨论】:

【参考方案1】:

当我的 POM 包含一个也将 os-maven-plugin 定义为扩展的父 POM 时,我发现正确解析 os.detected.classifier 存在问题。

您可以尝试将其配置为插件 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>

【讨论】:

以上是关于未按预期评估 Maven 属性(os-maven-plugin)的主要内容,如果未能解决你的问题,请参考以下文章

C# 布尔评估未按预期进行评估

正则表达式未按预期进行评估

Maven Codehaus findbugs 插件“onlyAnalyze”选项未按预期工作

Vue 计算属性未按预期更新

VB 选择案例未按预期工作

OpenGL 属性偏移未按预期工作