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的时候出现以下的问题.

截屏2021-01-12 下午5.04.36.png

一开始我以为是pom文件配置出了问题.后面我发现用idea的maven是可以编译的.所以代码应该是没锅的.于是我检查了一下maven的版本.果然有问题.
企业微信截图_0c169ca9-f941-46ff-a421-b7074375e17e.png

截屏2021-01-12 下午7.56.16.png

没错,maven@Homebrew安装的时候会自动安装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" "$@"

image.png

重新执行mvn package.编译成功.


chen
1 声望0 粉丝

野生java全栈开发