带有Spring Boot模块的Maven多模块项目

时间:2017-05-26 06:36:31

标签: spring maven spring-boot multi-module

我跟随Maven项目结构:

Project 1:
--pom.xml
Project 2:
--pom.xml
Project 3:
--pom.xml

即。 Project1,Project2和Project3在目录结构中彼此对等,每个都是Spring Boot Application(JAR)。 我想将Project2和Project3视为Project1的子项,而不更改目录结构。当我在Parent项目上执行相同的操作时,我需要在子项目上传递执行所有maven命令。此外,最重要的是,我应该能够将所有这些包装在单个JAR文件中。 我在Google上搜索了它,并遇到了Maven Assembly Plugin和Maven Shade插件,但这些似乎并没有帮助我。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以为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>

Project2的:

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

项目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>

我不确定你为什么要把所有东西都打包在一个罐子里面。如果您按照上面的配置,所有内容都将打包到project1中。这基本上就像将所有东西打包在一个罐子里一样。