POM не опубликован для подмодуля
В своем многомодульном проекте maven я заметил, что pom-файлы дочерних модулей не развертываются в Artifactory. Это вызывает ошибки в зависимых проектах, которые зависят от информации о зависимостях в POM дочерних модулей, что приводит к ошибкам в сборке Jenkins, например:
The POM for com.myorg.services:mydomain-model:jar:1.6.1-SNAPSHOT is missing, no dependency information available
с последующими ошибками компиляции, поскольку эти транзитивные зависимости не были загружены.
Больше информации:
Зависимый проект, приложение Spring Boot, содержит следующую зависимость:
<dependency>
<groupId>com.myorg.services</groupId>
<artifactId>mydomain-model</artifactId>
<version>1.6.1-SNAPSHOT</version>
</dependency>
Между тем целевой проект структурирован следующим образом, причем родительский POM:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myorg.services</groupId>
<artifactId>mydomain</artifactId>
<version>1.14.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>mydomain</name>
<description>mydomain</description>
<parent>
<groupId>com.myorg</groupId>
<artifactId>org-parent</artifactId>
<version>1.2.3</version>
</parent>
<modules>
<module>mydomain-model</module>
</modules>
(...)
</project>
И дочерний ПОМ:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.myorg.services</groupId>
<artifactId>mydomain</artifactId>
<version>1.14.0-SNAPSHOT</version>
</parent>
<groupId>com.myorg.services</groupId>
<artifactId>mydomain-model</artifactId>
<version>1.6.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mydomain-model</name>
<description>My Domain Model</description>
(...)
</project>
Это журналы, показывающие развертывание:
[pool-19-thread-2] INFO org.jfrog.build.extractor.maven.BuildInfoClientBuilder - [pool-19-thread-2] Deploying artifact: https://artifactory.mycompany.com/artifactory/libs-snapshot-local/com/myorg/services/mydomain-model/1.6.1-SNAPSHOT/mydomain-model-1.6.1-SNAPSHOT.jar
[pool-19-thread-1] INFO org.jfrog.build.extractor.maven.BuildInfoClientBuilder - [pool-19-thread-1] Deploying artifact: https://artifactory.mycompany.com/artifactory/libs-snapshot-local/com/myorg/services/mydomain/1.14.0-SNAPSHOT/mydomain-1.14.0-SNAPSHOT.pom
[main] INFO org.jfrog.build.extractor.maven.BuildDeploymentHelper - Artifactory Build Info Recorder: publish build info set to false, build info will not be published...
Это журналы, показывающие отсутствующий POM, приводящий к ошибкам компиляции для зависимого проекта:
[main] INFO org.apache.maven.cli.transfer.Slf4jMavenTransferListener - Downloading: https://artifactory.mycompany.com/artifactory/libs-snapshot/com/myorg/services/mydomain-model/1.6.1-SNAPSHOT/mydomain-model-1.6.1-SNAPSHOT.pom
[main] WARN org.codehaus.plexus.PlexusContainer - The POM for com.myorg.services:mydomain-model:jar:1.6.1-SNAPSHOT is missing, no dependency information available
Я проверил artifactory, и файл POM был доступен только для родительского модуля, но не для дочернего модуля, который предоставил только один файл Jar. Я надеялся, что POM дочернего модуля будет развернут в artifactory, чтобы избежать этих ошибок / предупреждений. Это возможно?
1 ответ
Решено переключением моих целей сборки maven с
clean verify
к
clean install
. По-видимому, jfrog достаточно умен, чтобы создать и развернуть зависимость подмодуля через
maven-jar-plugin
(вызывается через
verify
этап жизненного цикла), но он должен
maven-install-plugin
(через
install
phase) для обнаружения и развертывания в артефакте дополнительного артефакта, а именно pom.xml.