Как мне заставить мой образ Maven Docker искать его зависимости / родительский элемент в Nexus?

#docker #maven #dockerfile #nexus #parent-pom

#docker #maven #dockerfile #nexus #parent-pom

Вопрос:

Я пытаюсь использовать образ Maven Docker для создания проекта. pom проекта имеет родительский элемент в репозитории Nexus. Когда я создаю проект, в нем говорится, что родительский pom не разрешим, поскольку он не ищет его в Nexus. Как мне заставить изображение выглядеть в Nexus? Я могу создать тот же проект локально на своем компьютере, используя установку Maven.

Вот как выглядит мой Dockerfile:

 FROM maven:3.6.3-amazoncorretto-11
COPY settings.xml /usr/share/maven/ref/
CMD ["mvn","-v"]
 

Ответ №1:

Вы должны поместить раздел в свой файл настроек, в котором указано, где находится репозиторий nexus. Это делается с помощью разделов серверы и зеркала, а также может быть повторено в отдельных pom, если вы хотите переопределить его.

pom.xml

 <?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">

  <servers>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

  <mirrors>
    <mirror>
      <id>central</id>
      <name>central</name>
      <url>http://your-host:8081/repository/maven-group/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>

</settings>
 

Этот пример взят из записи в блоге sonatype, сделанной пару лет назад, но я думаю, что это все еще работает.