解决 Maven os.detected.classifier 报错:快速修复指南

0 前言

在 Maven 项目中,os.detected.classifier 是由 os-maven-plugin 检测操作系统类型并生成的一个属性,用于为不同平台选择合适的本地库。如果这个属性报错或“爆红”,通常是因为缺少插件声明或构建时无法识别你的操作系统。

1 解决方案

1.1 方法一:添加 os-maven-plugin 插件

确保你已正确声明 os-maven-plugin 插件:

<build>
    <plugins>
        <plugin>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.6.2</version> <!-- 使用最新版本 -->
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>detect</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

此插件会在 Maven 构建的初始化阶段检测操作系统,并设置 os.detected.classifier 属性,供其他依赖项使用(如需要平台相关的 native 库)。

点击执行:

控制台输出:

1.2 方法二:手动指定 os.detected.classifier

若你确定当前环境无需自动检测,或者想绕过这个问题,可手动在命令行中指定该属性。如:

mvn clean install -Dos.detected.classifier=your-classifier

其中 your-classifier 可能类似 osx-x86_64linux-x86_64 或 windows-x86_64 的值,根据你的系统进行调整。

1.3 方法三:检查 Maven 环境

有时问题可能出在 Maven 环境本身。你可以尝试以下操作:

  1. 更新 Maven 到最新版

  2. 清理 Maven 缓存

    rm -rf ~/.m2/repository/
    
  3. 重新运行构建命令

    mvn clean install
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;com.rain4cloud&lt;/groupId&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt; &lt;artifactId&gt;grpc-api&lt;/artifactId&gt; &lt;properties&gt; &lt;maven.compiler.source&gt;17&lt;/maven.compiler.source&gt; &lt;maven.compiler.target&gt;17&lt;/maven.compiler.target&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;!-- 这里不需要手动设置 os.detected.classifier,插件会自动检测 --&gt; &lt;!--&lt;os.detected.classifier&gt;windows-x86_64&lt;/os.detected.classifier&gt;--&gt; &lt;!--mac M暂未兼容,使用x86--&gt; &lt;os.detected.classifier&gt;osx-x86_64&lt;/os.detected.classifier&gt; &lt;protobuf-maven-plugin.version&gt;0.6.1&lt;/protobuf-maven-plugin.version&gt; &lt;protoc.version&gt;3.25.3&lt;/protoc.version&gt; &lt;protobuf.java.version&gt;3.25.3&lt;/protobuf.java.version&gt; &lt;grpc-java.version&gt;1.70.0&lt;/grpc-java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;io.grpc&lt;/groupId&gt; &lt;artifactId&gt;grpc-stub&lt;/artifactId&gt; &lt;version&gt;1.70.0&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;javax.annotation&lt;/groupId&gt; &lt;artifactId&gt;javax.annotation-api&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;io.grpc&lt;/groupId&gt; &lt;artifactId&gt;grpc-protobuf&lt;/artifactId&gt; &lt;version&gt;1.70.0&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;javax.annotation&lt;/groupId&gt; &lt;artifactId&gt;javax.annotation-api&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;io.grpc&lt;/groupId&gt; &lt;artifactId&gt;grpc-api&lt;/artifactId&gt; &lt;version&gt;1.70.0&lt;/version&gt; &lt;/dependency&gt; &lt;!-- javax.annotation API --&gt; &lt;!-- &lt;dependency&gt;--&gt; &lt;!-- &lt;groupId&gt;javax.annotation&lt;/groupId&gt;--&gt; &lt;!-- &lt;artifactId&gt;javax.annotation-api&lt;/artifactId&gt;--&gt; &lt;!-- &lt;version&gt;1.3.2&lt;/version&gt; &lt;!&ndash; 使用最新版本或适合你项目的版本 &ndash;&gt;--&gt; &lt;!-- &lt;/dependency&gt;--&gt; &lt;!----&gt; &lt;dependency&gt; &lt;groupId&gt;jakarta.annotation&lt;/groupId&gt; &lt;artifactId&gt;jakarta.annotation-api&lt;/artifactId&gt; &lt;version&gt;3.0.0&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.xolstice.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;protobuf-maven-plugin&lt;/artifactId&gt; &lt;version&gt;0.6.1&lt;/version&gt; &lt;configuration&gt; &lt;protocArtifact&gt;com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}&lt;/protocArtifact&gt; &lt;pluginId&gt;grpc-java&lt;/pluginId&gt; &lt;pluginArtifact&gt;io.grpc:protoc-gen-grpc-java:1.70.0:exe:${os.detected.classifier}&lt;/pluginArtifact&gt; &lt;/configuration&gt; &lt;executions&gt; &lt;execution&gt; &lt;goals&gt; &lt;goal&gt;compile&lt;/goal&gt; &lt;goal&gt;compile-custom&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;com.google.code.maven-replacer-plugin&lt;/groupId&gt; &lt;artifactId&gt;replacer&lt;/artifactId&gt; &lt;version&gt;1.5.3&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;phase&gt;generate-sources&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;replace&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;configuration&gt; &lt;includes&gt; &lt;include&gt;**/*.java&lt;/include&gt; &lt;/includes&gt; &lt;replacements&gt; &lt;replacement&gt; &lt;token&gt;javax.annotation.Generated&lt;/token&gt; &lt;value&gt;jakarta.annotation.Generated&lt;/value&gt; &lt;/replacement&gt; &lt;/replacements&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/project&gt;
最新发布
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值