Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
带Spring引导模块的Maven多模块项目_Spring_Maven_Spring Boot_Multi Module - Fatal编程技术网

带Spring引导模块的Maven多模块项目

带Spring引导模块的Maven多模块项目,spring,maven,spring-boot,multi-module,Spring,Maven,Spring Boot,Multi Module,我有以下Maven项目结构: Project 1: --pom.xml Project 2: --pom.xml Project 3: --pom.xml i、 e.Project1、Project2和Project3在目录结构上是对等的,它们都是Spring Boot应用程序(JAR)。 我想将Project2和Project3视为Project1的子项,而不改变目录结构。当我在父项目上执行相同的maven命令时,我需要在子项目上过渡地执行所有maven命令。而且最重要的是,我应该能够将它们

我有以下Maven项目结构:

Project 1:
--pom.xml
Project 2:
--pom.xml
Project 3:
--pom.xml
i、 e.Project1、Project2和Project3在目录结构上是对等的,它们都是Spring Boot应用程序(JAR)。 我想将Project2和Project3视为Project1的子项,而不改变目录结构。当我在父项目上执行相同的maven命令时,我需要在子项目上过渡地执行所有maven命令。而且最重要的是,我应该能够将它们打包到一个JAR文件中。 我在谷歌上搜索了一下,发现了Maven Assembly插件和Maven Shade插件,但这些似乎对我没有帮助。
非常感谢您的帮助。

您可以为project1、project2和project3制作单独的JAR。将project2和project3作为依赖项添加到project1。将project1添加为project2和project3的父级。相应的pom文件可能如下所示

项目1:

<?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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.stackoverflow</groupId>
    <artifactId>project1</artifactId>
    <name>${project.artifactId}</name>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>

    <modules>
        <module>project3</module>
        <module>project2</module>
    </modules>
</project>

4.0.0
com.stackoverflow
项目1
${project.artifactId}
聚甲醛
1.0.0-SNAPSHOT
项目3
项目2
项目2:

<?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>

    <parent>
        <artifactId>project1</artifactId>
        <groupId>com.stackoverflow</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>com.stackoverflow</groupId>
    <artifactId>project2</artifactId>
    <name>${project.artifactId}</name>
    <url>http://maven.apache.org</url>

</project>

4.0.0
项目1
com.stackoverflow
1.0.0-SNAPSHOT
com.stackoverflow
项目2
${project.artifactId}
http://maven.apache.org
项目3:

<?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>

    <parent>
        <artifactId>project1</artifactId>
        <groupId>com.stackoverflow</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>com.stackoverflow</groupId>
    <artifactId>project2</artifactId>
    <name>${project.artifactId}</name>
    <url>http://maven.apache.org</url>

</project>

4.0.0
项目1
com.stackoverflow
1.0.0-SNAPSHOT
com.stackoverflow
项目2
${project.artifactId}
http://maven.apache.org

我不知道你为什么想把所有东西都装在一个罐子里。如果您遵循上述配置,所有内容都将打包到project1中。这与将所有内容打包在一个jar中基本相同。

您可以为project1、project2和project3制作单独的jar。将project2和project3作为依赖项添加到project1。将project1添加为project2和project3的父级。相应的pom文件可能如下所示

项目1:

<?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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.stackoverflow</groupId>
    <artifactId>project1</artifactId>
    <name>${project.artifactId}</name>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>

    <modules>
        <module>project3</module>
        <module>project2</module>
    </modules>
</project>

4.0.0
com.stackoverflow
项目1
${project.artifactId}
聚甲醛
1.0.0-SNAPSHOT
项目3
项目2
项目2:

<?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>

    <parent>
        <artifactId>project1</artifactId>
        <groupId>com.stackoverflow</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>com.stackoverflow</groupId>
    <artifactId>project2</artifactId>
    <name>${project.artifactId}</name>
    <url>http://maven.apache.org</url>

</project>

4.0.0
项目1
com.stackoverflow
1.0.0-SNAPSHOT
com.stackoverflow
项目2
${project.artifactId}
http://maven.apache.org
项目3:

<?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>

    <parent>
        <artifactId>project1</artifactId>
        <groupId>com.stackoverflow</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>com.stackoverflow</groupId>
    <artifactId>project2</artifactId>
    <name>${project.artifactId}</name>
    <url>http://maven.apache.org</url>

</project>

4.0.0
项目1
com.stackoverflow
1.0.0-SNAPSHOT
com.stackoverflow
项目2
${project.artifactId}
http://maven.apache.org
我不知道你为什么想把所有东西都装在一个罐子里。如果您遵循上述配置,所有内容都将打包到project1中。这本质上就像所有东西都打包在一个罐子里一样