1

我注意到在我的多模块 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>

和孩子POM:

<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

我签入了工件,并且 POM 文件仅可用于父模块,但不能用于子模块,子模块仅提供一个 Jar 文件。我希望将子模块的 POM 部署到工件以避免这些错误/警告。有可能吗?

4

1 回答 1

0

通过将我的 Maven 构建目标从 切换clean verifyclean install. 显然 jfrog 足够聪明,可以通过maven-jar-plugin(通过生命周期阶段调用verify)构建和部署子模块依赖项,但它需要运行maven-install-plugin(通过install阶段)来检测和部署到工件,即 pom.xml。

于 2021-03-12T19:46:29.323 回答