当前位置: 首页 > 知识库问答 >
问题:

Maven多模块jenkins项目

那博瀚
2023-03-14

我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下:

a.xml
<artifactId>parent-1</artifactId>
<modules>
    <module>lookup-1</module>
    <module>lookup-2</module>
</modules>

lookup-1.xml
<artifactId>lookup-1</artifactId>
<parent>
    <groupId>com.lookup</groupId>
    <artifactId>parent-1</artifactId>
    <version>1.0.1-SNAPSHOT</version>
</parent>
<name>lookup-1</name>

lookup-2.xml
<artifactId>lookup-2</artifactId>
<parent>
    <groupId>com.lookup</groupId>
    <artifactId>parent-1</artifactId>
    <version>1.0.1-SNAPSHOT</version>
</parent>
<name>lookup-2</name>

现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两个项目。为此,我想有一个新的项目(pom.xml),我想把a和b放在模块标签下。像这样:

pom.xml
<name>combined_project</name>
<artifactId>combined_project</artifactId>
<modules>
    <module>a</module>
    <module>b</module>
</modules>

a.xml
<artifactId>parent-1</artifactId>
<name>a</name>
<parent>
    <artifactId>combined_project</artifactId>
</parent>
<modules>
    <module>lookup-1</module>
    <module>lookup-2</module>
</modules>

但是,它不适合我。我得到以下异常在maven:

Child module D:\....\a of D:\....\pom.xml does not exist

Maven无法找到子模块。我有以下项目结构:

project
 |_ lookup-1
    |_ lookup-1.xml
 |_ lookup-2
    |_ lookup-2.xml
 |_ a.xml
 |_ b.xml
 |_ pom.xml

有什么暗示吗?

共有3个答案

东门修能
2023-03-14

两种可能性:

>

  • 您需要在父pom的模块部分中修复子模块的路径。

    在创建jenkins作业时,您必须告诉jenkins也要克隆子模块。当我开始与詹金斯合作时,我遇到了类似的问题。解决方案是在Jenkins UI的高级scm行为下启用“递归更新子模块”复选框。

    https://imgs.xnip.cn/cj/n/47/44ceccfc-aeeb-467a-ace6-b4d6fea32277.png" width="100%" height="100%" />

  • 殷安顺
    2023-03-14

    Maven遵循一个项目结构,每个

    从提供的文件夹结构可以推断,当在命令行中显式指定时,a.xml可以充当pom文件,但它不能充当模块,因为它没有pom专用文件夹。xml。

    maven项目通常具有以下结构:

    • 原型id(文件夹)
      • 波姆。xml(打包:pom)(带有一个模块工件id)
      • 模块工件id(文件夹)
        • 波姆。xml

        如果您试图仅生成已更新的模块,则最近未签入的模块将不属于新创建的存档。但是如果你还是因为某些“特殊”的原因想这么做的话。以下方法可能就是您正在寻找的方法:

        (我不推荐它——因为它很凌乱而且违反惯例)在一个项目中有两个子模块,也有两个子模块。xml文件(要在命令行中指定的pom文件)。在一个xml文件中,假设“a.xml”“module-1”指定为模块,“b.xml”“module-2”指定为模块。

        使用当前修改的模块调用该pom文件上的构建。例如,如果修改了模块1,请在命令行中指定一个.xml作为pom。xml。

        请注意,我没有尝试过,但如果可能的话,这是我能想到的方法之一,我们可以完成你所寻找的。

        传递参数参考:在Jenkins build中传递动态参数

    姬和歌
    2023-03-14

    a.xml有2个子模块lookup-1和lookup-2。默认情况下,maven正在嵌套映射中查找子模块。所以你需要有以下目录结构:

    <parent>
    |
    +- a/pom.xml
    |  |
    |  +- lookup-1/pom.xml
    |  |
    |  +- lookup-2/pom.xml
    |
    +- b/pom.xml
    |
    +- pom.xml
    

    另一种方法是将父级更改为

    <name>combined_project</name>
    <artifactId>combined_project</artifactId>
    <modules>
        <module>a</module>
        <module>b</module>
        <module>lookup-1</module>
        <module>lookup-2</module>
    </modules>
    
     类似资料:
    • 问题内容: 我有一个多模块Maven项目,其中有多个微服务作为模块,因此我的父母中列出了一些模块,如下所示: 这里是依赖项,因此我在下面列出了依赖项 : 当我在本地运行时,按预期方式在被调用之前,但是在詹金斯中,它正在尝试构建然后使构建失败说: 我是否需要运行其他作业或重新排序模块,从本地到Jenkins有什么不同?感谢对此的任何帮助。 问题答案: 众所周知,问题在于子模块之间的依赖关系失败,因为

    • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

    • 我的项目结构如下: 是内的依赖项。 > 我应该在Jenkins中创建单独的作业来单独构建每个模块吗? 我为创建了一个作业,但出现以下错误(已将目标和操作设置为“清洁安装”: [INFO]扫描项目...[INFO] [INFO] ------------------------------------------------------------------------ [INFO]构建mypro

    • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

    • 父项目为demo-mybatis子模块为mybatis-dao、demo-service。demo-mybatis pom.xml如下: 4.0.0 pom mybatis-DAO Demo-service Demo-mybatis-app org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.example D

    • 我正在尝试创建一个多模块的项目,包含两个模块,核心和Web。它们都是我在Spring Initialzer上生成的Spring Boot项目。我设置了Maven POM文件,但在部署它时遇到了问题。然而,我很困惑配置是如何工作的。 核心模块将包含域对象/实体、Spring数据JPA存储库、服务,并将打包为一个JAR。Web模块将具有Spring Security、控制器和视图。它将被包装成一场战争