0
点赞
收藏
分享

微信扫一扫

M1版本Mac针对性配置

GG_lyf 2023-08-10 阅读 11
javaspring

M1版本Mac针对性配置

项目编译报错信息解决方案:

Could not find artifact com.google.protobuf:protoc:exe:osx-aarch_64:3.6.1 in public (http://nexus.xxx.com/repository/maven-public/)

公司项目中使用的是googleprotobuf这种协议数据交换格式

在所有项目中配置有以下代码的地方都会报错

<configuration>
    <protocArtifact>com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier}</protocArtifact>
    <pluginId>grpc-java</pluginId>
    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.19.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>

原因:

M1芯片使用的是最新的 osx-aarch_64 架构,${os.detected.classifier}获取当前系统架构会获取到osx-aarch_64的exe文件。而nexus私有仓库中没有此版本。从而导致错误!!

如下图所示:私有仓库中版本只有osx-x86_64

upload successful

处理方案一(不推荐)

${os.detected.classifier}更改为osx-x86_64.

<configuration>
    <protocArtifact>com.google.protobuf:protoc:3.6.1:exe:osx-x86_64</protocArtifact>
    <pluginId>grpc-java</pluginId>
    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.19.0:exe:osx-x86_64</pluginArtifact>
</configuration>

处理方案二(推荐)

${os.detected.classifier}获取的架构强制更改为osx-x86_64,代码不需要更改,在/Users/jarvan/.m2/settings.xml中增加一个profile标签和一个activeProfile标签

<profile>
  <id>apple-silicon</id>
  <properties>
    <os.detected.classifier>osx-x86_64</os.detected.classifier>
  </properties>
</profile>

<activeProfiles>
  <activeProfile>apple-silicon</activeProfile>
</activeProfiles>

完整配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <localRepository>/Users/jarvan/.m2/repository</localRepository>
  <servers>
      <server>
          <id>snapshots</id>
          <username>java-developer</username>
          <password>xxx</password>
      </server>

      <server>
          <id>releases</id>
          <username>java-developer</username>
          <password>xxx</password>
      </server>

      <server>
          <id>public</id>
          <username>java-developer</username>
          <password>xxx</password>
      </server>
  </servers>

  <mirrors>
     <mirror>
        <id>public</id>
        <name>public</name>
        <url>http://nexus.xxx.com/repository/maven-public/</url>
        <mirrorOf>public</mirrorOf>
    </mirror>

     <mirror>
         <id>snapshots</id>
         <name>snapshots</name>
         <url>http://nexus.xxx.com/repository/maven-snapshots/</url>
         <mirrorOf>snapshots</mirrorOf>
     </mirror>

     <mirror>
         <id>nexus-aliyun</id>
         <mirrorOf>central</mirrorOf>
         <name>Nexus Aliyun</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
     </mirror>
  </mirrors>

  <profiles>
    <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>public</id>
                <name>Public</name>
                <url>http://nexus.xxx.com/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </snapshots>
            </repository>
            <repository>
                <id>nexus</id>
                <name>local private nexus</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>public</id>
                <name>Public</name>
                <url>http://nexus.xxx.com/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </snapshots>

            </pluginRepository>
            <pluginRepository>
                <id>nexus</id>
                <name>local private nexus</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
       </profile>
	<profile>
     	 <id>apple-silicon</id>
     	 <properties>
        	<os.detected.classifier>osx-x86_64</os.detected.classifier>
      	</properties>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>nexus</activeProfile>
    <activeProfile>apple-silicon</activeProfile>
  </activeProfiles>

</settings>
举报

相关推荐

0 条评论