如何在jenkins中构建多模块maven项目

如何在jenkins中构建多模块maven项目,maven,jenkins,Maven,Jenkins,我的项目结构如下: ProjectParent - pom.xml ProjectApp -pom.xml ProjectAPI -pom.xml ProjectModels -pom.xml ProjectServices -pom.xml Etc.. ProjectModels/ProjectsServices是ProjectAPI/ProjectApp中的依赖项 我是否应该在Jenkins内部创建单独的作业来分别构建每个模块 我为ProjectAPP创

我的项目结构如下:

ProjectParent
 - pom.xml
 ProjectApp
   -pom.xml
 ProjectAPI
   -pom.xml
 ProjectModels
   -pom.xml
 ProjectServices
   -pom.xml
 Etc..
ProjectModels/ProjectsServices
ProjectAPI/ProjectApp
中的依赖项

  • 我是否应该在Jenkins内部创建单独的作业来分别构建每个模块

  • 我为
    ProjectAPP
    创建了一个作业,但出现以下错误(已将目标和操作设置为“清洁安装”:

  • [信息]正在扫描项目。。。 [信息]
    [信息]------------------------------------------------------------------------ [信息]正在构建myproject应用程序0.0.1-SNAPSHOT [信息]------------------------------------------------------------------------

    Downloading: http://maven.springframework.org/snapshot/com/myproject/myproject-common-config/0.0.1-SNAPSHOT/myproject-common-config-0.0.1-SNAPSHOT.pom
    [WARNING] The POM for com.myproject:myproject-common-config:jar:0.0.1-SNAPSHOT is missing,
    
    没有可用的依赖项信息 下载: [警告]com.myproject:myproject entities:jar:0.0.1-SNAPSHOT的POM丢失,否 可用的依赖项信息 下载: [警告]com.myproject:myproject服务:jar:0.0.1-SNAPSHOT的POM丢失,否 可用的依赖项信息 下载: [警告]com.myproject:myproject persistence:jar:0.0.1-SNAPSHOT的POM丢失,否 可用的依赖项信息 下载: ...... org.apache.maven.lifecycle.LifecycleExecutionException:未能对项目myproject app执行目标:无法解析依赖项 对于project com.myproject:myproject应用程序:war:0.0.1-SNAPSHOT:The 无法解析以下工件: com.myproject:myproject公共配置:jar:0.0.1-SNAPSHOT, com.myproject:myproject实体:jar:0.0.1-SNAPSHOT, com.myproject:myprojectservices:jar:0.0.1-SNAPSHOT, com.myproject:myproject persistence:jar:0.0.1-SNAPSHOT:找不到 artifact com.myproject:myproject公共配置:jar:0.0.1-SNAPSHOT in org.springframework.maven.snapshot ()


    项目父Pom

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.myproject</groupId>
        <artifactId>myproject-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <modules>
            <module>myproject-entities</module>
            <module>myproject-services</module>
            <module>myproject-persistence</module>
            <module>myproject-app</module>
            <module>myproject-merchant</module>
            <module>myproject-common-config</module>
            <module>myproject-api</module>
        </modules>
    
        <dependencyManagement>
            <dependencies>
                ...
            </dependencies>
        </dependencyManagement>
    
        <repositories>      
            ...
        </repositories>
    
        <build>
            ...
        </build>
    
        <properties>
            ...
    
            <myproject-entities-version>0.0.1-SNAPSHOT</myproject-entities-version>
            <myproject-services-version>0.0.1-SNAPSHOT</myproject-services-version>
            <myproject-persistence-version>0.0.1-SNAPSHOT</myproject-persistence-version>
        </properties>
    
    </project>
    
    
    4.0.0
    com.myproject
    我的项目父项
    0.0.1-快照
    聚甲醛
    我的项目实体
    我的项目服务
    myproject持久性
    myproject应用程序
    我的项目商人
    myproject公共配置
    myproject api
    ...
    ...
    ...
    ...
    0.0.1-快照
    0.0.1-快照
    0.0.1-快照
    

    ProjectApp Pom

    <?xml version="1.0"?>
    <project
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.myproject</groupId>
            <artifactId>myproject-parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
    
        <artifactId>myproject-app</artifactId>
        <packaging>war</packaging>
    
        <version>0.0.1-SNAPSHOT</version>
        <name>myproject-app</name>
        <url>http://maven.apache.org</url>
    
    
        <dependencies>
    
            ...
    
            <dependency>
                <groupId>com.myproject</groupId>
                <artifactId>myproject-common-config</artifactId>
                <version>${myproject-common-config}</version>
            </dependency>
    
            <dependency>
                <groupId>com.myproject</groupId>
                <artifactId>myproject-entities</artifactId>
                <version>${myproject-entities-version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.myproject</groupId>
                <artifactId>myproject-services</artifactId>
                <version>${myproject-services-version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.myproject</groupId>
                <artifactId>myproject-persistence</artifactId>
                <version>${myproject-persistence-version}</version>
            </dependency>
    
        </dependencies>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
            <myproject-common-config>0.0.1-SNAPSHOT</myproject-common-config>
            <myproject-entities-version>0.0.1-SNAPSHOT</myproject-entities-version>
            <myproject-services-version>0.0.1-SNAPSHOT</myproject-services-version>
            <myproject-persistence-version>0.0.1-SNAPSHOT</myproject-persistence-version>
        </properties>
    
    </project>
    
    
    4.0.0
    com.myproject
    我的项目父项
    0.0.1-快照
    myproject应用程序
    战争
    0.0.1-快照
    myproject应用程序
    http://maven.apache.org
    ...
    com.myproject
    myproject公共配置
    ${myproject公共配置}
    com.myproject
    我的项目实体
    ${myproject entities版本}
    com.myproject
    我的项目服务
    ${myproject services版本}
    com.myproject
    myproject持久性
    ${myproject持久化版本}
    UTF-8
    0.0.1-快照
    0.0.1-快照
    0.0.1-快照
    0.0.1-快照
    

    我是否使用了错误的目标?我是否需要链接多个命令?例如,首先构建其他模块

    我用的是Maven 3

    注意:我针对ParentProject Pom将目标更改为“clean install”,并且所有内容都正确构建


    谢谢

    问题在于,您不能仅为
    ProjectApp
    模块创建项目,因为它依赖于
    ProjectApp
    父模块下的其他模块。如果您不将这些模块部署到maven存储库,maven将无法在存储库或构建反应器中找到它们

    相反,您应该为父级创建作业。这将构建必要的模块


    当您在
    ProjectApp
    工作时,您也可以使用该选项,但我对此没有任何经验。

    也有同样的问题,SpaceTrucker的回答帮助了我

    因此,我只运行以下内容:


    ../ProjectParent$mvn-am-pl ProjectApp test

    您是否在parent pom
    部分指定了所有其他模块?如果是,这应该可以工作。如果不是,您应该这样做。您可以为
    ProjectApp
    发布
    pom.xml
    吗?谢谢SpaceTrucker。我已经按照您的建议为家长创建了作业尊敬的。