乐趣区

关于maven:osx环境下maven项目编译失败

osx 下 maven 的一个坑

osx 零碎 maven 根本都是 Homebrew 装置的.maven 是 java 写的须要 jre 运行环境. 所以 Homebrew 会主动帮你装 openjdk.

{
    "homebrew_version":"2.4.0-69-g67c843b-dirty",
    "used_options":[ ],
    "unused_options":[ ],
    "built_as_bottle":false,
    "poured_from_bottle":false,
    "installed_as_dependency":false,
    "installed_on_request":true,
    "changed_files":null,
    "time":1592835968,
    "source_modified_time":1573129938,
    "HEAD":"67c843b91ef272d5408fc2cb74ce8b39042ec1bf",
    "stdlib":null,
    "compiler":"clang",
    "aliases":["maven@3.6"],
    "runtime_dependencies":[
        {
            "full_name":"openjdk",
            "version":"13.0.2+8"
        }
    ],
    "source":{
        "path":"/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/maven.rb",
        "tap":"homebrew/core",
        "spec":"stable",
        "versions":{
            "stable":"3.6.3",
            "devel":"","head":"",
            "version_scheme":0
        }
    }
}****

大多数状况是相安无事的. 直到遇见了 javax.xml.bind.annotation 包. 这个包存在于 jdk8, 在后续大略 jdk11 的时候被移除了. 于是 mvn package 的时候呈现以下的问题.

一开始我认为是 pom 文件配置出了问题. 前面我发现用 idea 的 maven 是能够编译的. 所以代码应该是没锅的. 于是我查看了一下 maven 的版本. 果然有问题.

没错, 他竟然用的是 openjdk13.0. 很显然和咱们的开发环境 1.8 产生了抵触. 果决改之.

如下, 把 java_home 改成咱们的 jdk1.8

#!/bin/bash 
JAVA_HOME="${JAVA_HOME:-/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.6.3_1/libexec/bin/mvn" "$@"

从新执行 mvn package. 编译胜利.

退出移动版