Показать статистику
0 голосов
от (1.7тыс. баллов)

Внутри моего Dockerfile я пытаюсь просто добавить Maven в свой образ, в котором уже есть правильная версия Java8. Как в:

RUN apt-get install -y maven

Когда я это делаю, установка для mavenJava11 даже думает, что я просто хочу установить Maven для Java8 JDK, который я уже установил на коробке. Я надеюсь, что есть какое-то очевидное решение, чистое и простое. Сначала я подумал, что  apt-mark hold может сработать, но я не могу понять имя пакета для хранения. Например, я пытался

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

Кажется, что maven очень недружелюбно устанавливает Java11 без какого-либо переключателя, чтобы сказать ему: а) установить Java8 или не устанавливать Java и просто верить, что он уже установлен.

Есть идеи, как установить maven на ubuntu без этой проблемы? Заранее спасибо за помощь.

233 просмотров 1 ответов

1 Ответ

0 голосов
от (26.4тыс. баллов)

Кажется, что maven очень недружелюбно устанавливает Java11 без какого-либо переключателя, чтобы сказать ему: а) установить Java8 или не устанавливать Java и просто верить, что он уже установлен.

На самом деле это не проблема Maven. Когда вы  выполните apt-get insall, зависимости пакета также будут установлены. Но в случае с Maven вам не нужно устанавливать его с помощью apt-get. Вы можете просто скачать Maven wget и распаковать его.

Вот пример 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" ]
``
...