Docker многоэтапный maven build разделение, разрешение и компиляция зависимостей - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь настроить многоступенчатый dockerfile для моего Java-проекта на основе maven. Вот что я использую до сих пор:

### STAGE 1: Build ###
FROM maven:3.6.1-jdk-8 as build

WORKDIR /usr/src/app

# Install app dependencies
COPY pom.xml .
RUN mvn dependency:go-offline

# Bundle app source
COPY src src
RUN mvn package

### STAGE 2: Production Environment ###
FROM jboss/wildfly:17.0.0.Final

COPY --from=build /usr/src/app/target/Appname.war /opt/jboss/wildfly/standalone/deployments/Appname.war

RUN /opt/jboss/wildfly/bin/add-user.sh admin admin123 --silent
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

Вопрос о командах mvn. Я вижу, что mvn dependency:go-offline загружает некоторые зависимости, и это здорово. Но затем mvn package загружает еще несколько пакетов. Зачем? Как я могу сделать два шага:

  • один для разрешения и загрузки всех зависимостей
  • один для компиляции исходного кода и создания .war-файла

EDIT

используя mvn package -o, я получаю следующий пакет не найден:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project monolith: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.apache.maven:maven-profile:jar:2.0.6, org.apache.maven:maven-repository-metadata:jar:2.0.6, org.apache.maven:maven-plugin-registry:jar:2.0.6, classworlds:classworlds:jar:1.1-alpha-2: Cannot access central (https://repo.maven.apache.org/maven2) in offline mode and the artifact org.apache.maven:maven-profile:jar:2.0.6 has not been downloaded from it before. -> [Help 1]

Я думаю, что это связано с плагином сборки в pom.xml. Есть мысли?

<build>
    <finalName>Monolith</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.3</version>
            <!--<configuration>-->
                <!--<webXml>src\main\webapp\WEB-INF\web.xml</webXml>-->
            <!--</configuration>-->
        </plugin>
    </plugins>
</build>

1 Ответ

1 голос
/ 20 июня 2019

Скорее всего, Go-offline / resol-plugins для MDEP-82 не устраняет все зависимости плагинов Ошибка, которая в настоящее время не устранена.

В соответствии с этим комментарием в проблеме MDEP-82 это потенциально можно исправить, указав версию подключаемого модуля maven-dependency-plugin вместо использования по умолчанию:

затем явно определите версию подключаемого модуля maven-dependency-plugin, которая не будет зависеть от версии по умолчанию, определенной внутри Maven:

mvn -s settings.xml org.apache.maven.plugins:maven-dependency-plugin:2.8:go-offline

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...