【问题标题】:Installing maven using `apt-get install` overwrites Java8 with Java11使用 `apt-get install` 安装 maven 会用 Java11 覆盖 Java8
【发布时间】:2021-12-10 22:56:43
【问题描述】:

在我的 Dockerfile 中,我试图简单地将 Maven 添加到我已经具有适当版本的 Java8 的图像中。如:

RUN apt-get install -y maven

当我这样做时,maven 的安装带来了 Java11,即使我只是想为我已经安装在盒子上的 Java8 JDK 安装 Maven。我希望有一些明显的解决方案是干净和简单的。起初我认为apt-mark hold 可能会起作用,但我无法弄清楚要保存的包的名称。比如我试过

RUN  apt-mark hold default-jdk default-jre \
  && apt-get install -y maven

在没有任何开关告诉它a)安装Java8或不安装Java并相信它已经安装的情况下安装Java11似乎对maven非常不友好。

关于如何在没有这个问题的情况下在 ubuntu 上安装 maven 的任何想法?

【问题讨论】:

  • 是否有特定原因要安装 maven 而不是使用 maven 包装器?
  • 您是否考虑过使用Maven image 而不是安装它?
  • @Turing85 我还没有听说过 maven 包装器。我找到了解决当前问题的方法,但是如果包装器是更合适的解决方案,您能给我一个链接吗?
  • 把事情说清楚。 Maven 没有安装任何东西...问题与 ubuntu 软件包中给出的依赖关系有关......我建议通过以下方式安装它:maven.apache.org

标签: java docker maven apt


【解决方案1】:

在没有任何开关告诉它a)安装Java8或不安装Java并相信它已经安装的情况下安装Java11似乎对maven非常不友好。

这并不是真正的 Maven 问题。当您执行apt-get insall 时,也会安装包的依赖项。但是对于 Maven,您实际上并不需要使用 apt-get 安装它。只需使用wget 下载 Maven 并解压即可。

这是一个Dockerfile 的示例:

FROM adoptopenjdk/openjdk8:debian-slim

RUN apt-get update && apt-get install -y wget && \
    wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz && \
    tar -xvzf apache-maven-3.8.4-bin.tar.gz && \
    rm apache-maven-3.8.4-bin.tar.gz

ENTRYPOINT [ "/apache-maven-3.8.4/bin/mvn", "--help" ]`

或者您可以简单地将 Maven 映像与 Java 8 一起使用:

FROM maven:3.8.4-jdk-8

ENTRYPOINT [ "mvn", "--help" ]
``

【讨论】:

    【解决方案2】:

    现在您的系统上有两个 java 版本。这本身不是问题。

    只需使用默认选择您想要的版本

    sudo update-alternatives --config java
    

    详情请见https://askubuntu.com/q/1288175

    【讨论】:

      【解决方案3】:

      在我的情况下,我发现可以通过暂停使用以下 3 个软件包来阻止安装 Java11

      RUN apt-mark hold default-jdk  \
        && apt-mark hold default-jre \
        && apt-mark hold default-jre-headless \
        && apt-get install -y maven
      

      至少对于我的情况(Corretto Java8 JDK 安装在 Ubuntu 20 图像上)将这些包标记为暂停,使 maven 安装无法将 java 版本更新到 11。

      【讨论】:

        猜你喜欢
        • 2016-07-28
        • 2018-03-01
        • 1970-01-01
        • 2014-06-02
        • 1970-01-01
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多