У меня проблема при создании определенного модуля моих проектов Maven. Структура проекта такая:
импортер данных (родитель A)
|____ весенняя партия (ребенок B, баночка)
|____ докер (ребенок C)
Я использую IntelliJ (но пробовал с CLI и тем же поведением) для сборки, когда я строю из родительского pom, проблем нет, но когда я пытаюсь собрать сначала spring-batch, а затем docker, у меня есть текущая ошибка:
Could not find artifact ***.****.****.****:data-importer:pom:develop in nexus (http://**********/repository/maven-dev-group/)
Я не знаю, почему он пытается получить родительский pom, даже если я определил относительный путь в дочерних POM.
У меня есть следующий POM (без конфиденциальных частей):
импортер данных (родитель A)
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>*******</groupId>
<artifactId>data-importer</artifactId>
<version>develop</version>
<packaging>pom</packaging>
<name>data-importer</name>
<description>data importer application for *</description>
<parent>
<groupId>*****.*****.******</groupId>
<artifactId>super-pom</artifactId>
<version>2.2.1-SNAPSHOT</version>
<relativePath/>
</parent>
<properties>
some versions
</properties>
<modules>
<module>spring-batch</module>
<module>docker</module>
</modules>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>*.*.*.*</groupId>
<artifactId>data-importer-spring-batch</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
**весенняя партия (ребенок А) **
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>****.****.**.***</groupId>
<artifactId>data-importer</artifactId>
<version>develop</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>data-importer-spring-batch</artifactId>
<version>develop</version>
<packaging>jar</packaging>
<name>spring-batch</name>
<description>data importer application for *</description>
<dependencies>
some dependencies
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<id>data-importer</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
one dependency
</dependencies>
</dependencyManagement>
</project>
докер (ребенок С)
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>*.*.*.*</groupId>
<artifactId>data-importer</artifactId>
<version>develop</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>scpas-import</artifactId>
<version>develop</version>
<packaging>pom</packaging>
<name>docker</name>
<description>data importer application for docker</description>
<profiles>
<!-- Profil commun pour générer les images docker -->
<profile>
<id>docker</id>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!--Copy du jar spring batch dans target/docker/volumes/transferdata/import/data-importer -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-data-importer-jar-files</id>
<goals>
<goal>copy-dependencies</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<includeGroupIds>*.*.*.*</includeGroupIds>
<includeArtifactIds>data-importer-spring-batch</includeArtifactIds>
<type>jar</type>
<outputDirectory>
${project.build.directory}/docker/volumes/transferdata/import/data-importer/
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/docker</outputDirectory>
<resources>
<resource>
<directory>${basedir}/database</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
<resource>
<directory>${basedir}/data-importer</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
<resource>
<directory>${basedir}</directory>
<filtering>true</filtering>
<includes>
<include>Dockerfile</include>
</includes>
</resource>
<resource>
<directory>${basedir}</directory>
<filtering>true</filtering>
<includes>
<include>docker-compose.data-importer.yml</include>
</includes>
</resource>
<resource>
<directory>${basedir}</directory>
<filtering>true</filtering>
<includes>
<include>docker-entry-point.sh</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!--Génération de image docker-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<executions>
<execution>
<id>build-image</id>
<goals>
<goal>build</goal>
</goals>
<configuration>
<dockerDirectory>${project.build.directory}/docker</dockerDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>
docker-push
</id>
some steps to push image in our registry
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>*.*.*.*</groupId>
<artifactId>data-importer-spring-batch</artifactId>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Любая идея, почему он пытается получить родительский POM из реестра? (Я не хочу использовать это как зависимость mvn)
Спасибо
Я пробовал некоторые трюки в settings.xml, чтобы никогда не извлекать моментальные снимки и выпуски из реестра, но ничего не работает, кроме создания полного проекта из родительского POM.
Конечно, сначала я делаю чистую установку на весеннем пакете, затем чистую установку на докере, и вот здесь у меня описанная ошибка (ошибка не возникает при чистой установке на родительском pom)
mvn -pl docker --also-make install
(из корня проекта) должен заставить maven создавать родственные модули, от которых зависит текущий модуль.
Спасибо за ваш ответ, но, как я уже сказал, я пытаюсь собрать каждый модуль отдельно (конечная цель — завершить реализацию CI/CD с одним заданием для каждого модуля). Создание полного проекта из корня проекта работает (и именно поэтому я в настоящее время есть в моей очереди)
Моя команда выше создает только модуль docker
(+ его зависимости). Если мы хотим построить все один раз и только один раз, нам нужно больше информации о настройке всего конвейера.
В каком модуле вы получаете эту ошибку: Could not find artifact ***.****.****.****:data-importer:pom:develop
не показывает информацию о необходимости ... также обычно в консоли больше информации в таких случаях ...
У меня есть эта ошибка при попытке очистить докер модуля установки:
[ОШИБКА] Не удалось выполнить цель проекта scpas-import: не удалось разрешить зависимости для проекта ..*.*:scpas-import:pom:1.0.0-SNAPSHOT: не удалось собрать зависимости в ..*.*:data- importer-spring-batch:jar:1.0.0-SNAPSHOT: не удалось прочитать дескриптор артефакта для ..*.*:data-importer-spring-batch:jar:1.0.0-SNAPSHOT: не удалось найти ..*.* :data-importer:pom:1.0.0-SNAPSHOT в http://****:*/repository/maven-dev-group/ был кэширован в локальном репозитории, разрешение не будет повторяться до тех пор, пока не истечет интервал обновления nexus истекло или обновление принудительно -> [Справка 1]
(Я попытался изменить версию с помощью «SNAPSHOT», чтобы увидеть, есть ли специальные политики в реестре моей компании. Я пытался установить «updatePolicy» так, чтобы никогда не использовать моментальные снимки в моем файле settings.xml, но без изменений.
Во-первых, data-importer-spring-batch
запрашивается в конфигурации вашего плагина зависимостей, но отсутствует как зависимость в модуле: scpas-import
, что означает, что Maven не может определить правильный порядок сборки...
Что такое мой «реактор»? Извините за вопрос новичка, я обычно не работаю с Maven. Но я проверяю свой локальный .m2/репозиторий, и после сборки spring-batch он у меня есть в моем репо. Просто не понимаю, почему он пытается получить data-importer:pom (родитель)
Лучше всего было бы сделать пример проекта на Github
Поскольку доступ к родительскому POM предоставляется, вы можете просто предварительно установить его локально.
Это решит поиск родительского репозитория.
Что вам нужно, так это вызвать Maven с опцией -N (нерекурсивно) mvn install -N
, и тогда вы сможете ее использовать.
Большое спасибо, приятель, еще один час, и я бы сдался, но твой трюк идеально подходит для моего случая!
Вы пробовали бегать
mvn install
?