簡體   English   中英

使用 apt-get install 安裝 maven 會用 Java11 覆蓋 Java8

[英]Installing maven using `apt-get install` overwrites Java8 with Java11

在我的 Dockerfile 內部,我試圖簡單地將 Maven 添加到我已經具有正確版本的 Java8 的圖像中。 如:

RUN apt-get install -y maven

當我這樣做時, maven的安裝帶來了 Java11,即使我只是想為我已經安裝在盒子上的 Java8 JDK 安裝 Maven。 我希望有一些明顯的解決方案是干凈和簡單的。 起初我認為apt-mark hold可能會起作用,但我無法弄清楚要持有的 package 的名稱。 例如,我試過

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

maven 安裝 Java11 似乎非常不友好,沒有任何開關告訴它 a) 安裝 Java8 或不安裝 Java 並相信它已經安裝。

關於如何在沒有此問題的情況下在 ubuntu 上安裝 maven 的任何想法?

在我的情況下,我發現我可以通過暫停使用以下 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安裝無法更新 Z93F725A07423FE1C889F448B33Z2 版本

maven 安裝 Java11 似乎非常不友好,沒有任何開關告訴它 a) 安裝 Java8 或不安裝 Java 並相信它已經安裝。

這並不是真正的 Maven 問題。 當您執行apt-get insall時,還會安裝 package 的依賴項。 但是如果是 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" ]
``

現在,您的系統上有兩個 java 版本。 這本身不是問題。

只需 select 您想要默認使用的版本

sudo update-alternatives --config java

有關詳細信息,請參閱https://askubuntu.com/q/1288175

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM