Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有存储库的Spring boot多模块maven项目_Java_Spring Boot_Maven_Multi Module - Fatal编程技术网

Java 没有存储库的Spring boot多模块maven项目

Java 没有存储库的Spring boot多模块maven项目,java,spring-boot,maven,multi-module,Java,Spring Boot,Maven,Multi Module,我有多个spring boot项目,每个项目都是独立的,都有自己的CICD管道 这些项目需要一些公共类,我用公共类创建了一个单独的项目 Parent pom.xml (with packaging) lib-project pom.xml project-1 pom.xml project-2 pom.xml 我可以从父目录轻松构建项目,它构建所有项目 parent$ mvn clean package 它生成所有jar文

我有多个spring boot项目,每个项目都是独立的,都有自己的CICD管道

这些项目需要一些公共类,我用公共类创建了一个单独的项目

Parent
   pom.xml (with packaging)
   lib-project
      pom.xml
   project-1
      pom.xml
   project-2
      pom.xml
    
我可以从父目录轻松构建项目,它构建所有项目

parent$ mvn clean package
它生成所有jar文件,并将它们放在各自的项目目标文件夹中

我的问题是,我无法在父级启动此操作,必须从每个项目内部的管道启动此操作。


我无法使用任何本地或远程存储库,使用
mvn clean install
将依赖jar放入m2中,然后将其称为依赖项

我想从relavent项目目录构建它

parent/project-1$ mvn clean package
它显示以下错误:

无法解析项目com.test的依赖项。多个:项目-1:jar:0.0.1-SNAPSHOT:找不到工件com.test。多个:lib项目:jar:0.0.1-SNAPSHOT

我对project-1编写的逐步期望

  • 检查项目-1是否存在依赖关系
  • 转到../lib项目
  • 在目标文件夹(或与项目相关的任何位置)中编译并构建它
  • 将生成的jar添加到“project-1”依赖项中
  • 编译并构建“project-1”jar文件
  • 父Pom配置

    <project ...>
       <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.3</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <groupId>com.test.multiple</groupId>  
        <artifactId>parent</artifactId>  
        <version>0.0.1-SNAPSHOT</version>  
    
        <packaging>pom</packaging>
        
        <modules>
            <module>lib-project</module>
            <module>project-1</module>
        </modules>
    </project>
    
    
    4.0.0
    org.springframework.boot
    spring启动程序父级
    2.4.3
    com.test.multiple
    父母亲
    0.0.1-快照
    聚甲醛
    lib项目
    项目-1
    
    **Lib项目pom**

    <project ...>
        
        <parent>  
            <groupId>com.test.multiple</groupId>  
            <artifactId>parent</artifactId>  
            <version>0.0.1-SNAPSHOT</version>  
        </parent>
        
        <groupId>com.test.multiple</groupId>
        <artifactId>lib-project</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>lib-project</name>
        <properties>
            <java.version>11</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    
    
    com.test.multiple
    父母亲
    0.0.1-快照
    com.test.multiple
    lib项目
    0.0.1-快照
    lib项目
    11
    org.springframework.boot
    SpringBootStarterWeb
    org.springframework.boot
    弹簧起动试验
    测试
    
    项目-1 pom

    <project ...>
        
        <parent>  
            <groupId>com.test.multiple</groupId>  
            <artifactId>parent</artifactId>  
            <version>0.0.1-SNAPSHOT</version>  
        </parent>
        
        <groupId>com.test.multiple</groupId>
        <artifactId>project-1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>project-1</name>
        <properties>
            <java.version>11</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            
            <dependency>
                <groupId>com.test.multiple</groupId>
                <artifactId>lib-project</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
        
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    
    
    com.test.multiple
    父母亲
    0.0.1-快照
    com.test.multiple
    项目-1
    0.0.1-快照
    项目-1
    11
    org.springframework.boot
    SpringBootStarterWeb
    org.springframework.boot
    弹簧起动试验
    测试
    com.test.multiple
    lib项目
    ${project.version}
    org.springframework.boot
    springbootmaven插件
    
    maven项目的设计目的不是按需构建其依赖项。但是,jenkins可以配置为在将更改推送到上游依赖项时构建下游项目

    我还通过在相关Jenkins文件中的父pom上使用-pl选项来构建子项目的子集来解决这个问题

    詹金斯档案

    clone parent project
    mvn clean package -pl core,deployable
    
    我有多个spring boot项目,每个项目都是独立的,都有自己的CICD管道

    这些项目需要一些公共类,我用公共类创建了一个单独的项目

    Parent
       pom.xml (with packaging)
       lib-project
          pom.xml
       project-1
          pom.xml
       project-2
          pom.xml
        
    
    恭喜你,你的项目不再独立了

    根据上述定义,以下是依赖项:

    • lib项目
      依赖于父项目
    • project-1
      取决于
      parent
    • project-1
      依赖于
      lib-project
    关于Maven项目中依赖关系的讨论,请查看和



    我不能使用任何本地或远程存储库,使用
    mvn clean install
    将依赖jar放入m2中,然后将其称为依赖项

    考虑到这一限制和上面列出的依赖项,所有项目的POM和源文件都必须存在于磁盘上,以便进行构建。生成过程必须从父文件夹开始。构建过程必须同时构建所有模块


    此外,请考虑使用<代码> MVN“干净验证< /代码>,而不是<代码> MVN CurrySuths<代码>,以避免使用您正在构建的工件填充<强>本地存储库< /强>。

    “我不能使用任何本地或远程存储库,使用MVN Cudio安装将依赖的jar放在M2中,然后将其称为依赖项”。那么你需要解决这个问题。其他一切都将是一个丑陋的黑客。抱歉,限制是它只能从项目文件夹中启动。它听起来不像maven可以按照你想要的方式做你想做的事情。这就是为什么您可能需要以不同的方式处理问题。