【问题标题】:Maven Multi Module Project with Spring Boot Module带有 Spring Boot 模块的 Maven 多模块项目
【发布时间】:2017-05-26 06:36:30
【问题描述】:

我关注 Maven 项目结构:

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

即Project1、Project2 和 Project3 在目录结构上相互对等,它们都是 Spring Boot Application (JAR)。 我想在不更改目录结构的情况下将 Project2 和 Project3 视为 Project1 的子项。当我在父项目上执行相同的命令时,我需要在子项目上传递执行所有 maven 命令。此外,最重要的是,我应该能够将它们全部打包在一个 JAR 文件中。 我在谷歌上搜索它并遇到了 Maven Assembly Plugin 和 Maven Shade Plugin 但这些似乎并没有帮助我。 任何帮助将不胜感激。

【问题讨论】:

    标签: spring maven spring-boot multi-module


    【解决方案1】:

    您可以为 project1、project2 和 project3 制作单独的 jar。将 project2 和 project3 作为依赖项添加到 project1。将 project1 作为父项目添加到 project2 和 project3。对应的 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/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>
    

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

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

    我不确定您为什么希望将所有内容都打包在一个 jar 中。如果按照上面的配置,一切都会打包到project1中。这基本上就像所有东西都打包在一个 jar 下一样。

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 2015-10-10
      • 1970-01-01
      • 2014-06-02
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 2016-09-13
      相关资源
      最近更新 更多