简体   繁体   English

如何制作Spring引导多模块项目的单个war文件

[英]How to make single war file of Spring Boot multimodule project

my main root pom and also web module pom and model module pom is there so How to make single war file instead of multiple war file of each module.Or any ather way to make war file from these jars generated and war file contain application.properties and WEB-INF and META-INF folder with lib folder我的主要根 pom 以及 web 模块 pom 和 model 模块 pom 在那里所以如何制作单个战争文件而不是每个模块的多个战争文件。以及带有 lib 文件夹的 WEB-INF 和 META-INF 文件夹

Main pom.xml主pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>
    <modules>
        <module>web</module>
        <module>model</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.codemaster</groupId>
    <artifactId>college-management-system</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>college-management-system</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>13</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>



</project>

web module pom.xml web 模块 pom.xml

<?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">
    <parent>
        <artifactId>college-management-system</artifactId>
        <groupId>com.codemaster</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>web</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.codemaster</groupId>
            <artifactId>model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

model module pom.xml model 模块 pom.xml

<?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">
    <parent>
        <artifactId>college-management-system</artifactId>
        <groupId>com.codemaster</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>model</artifactId>
    <packaging>jar</packaging>

</project>

so how to make only single war file instead of multiple war files of each module那么如何只制作单个war文件而不是每个模块的多个war文件

Your multi-module project structure and POM should be like this你的多模块项目结构和POM应该是这样的

Parent - pom.xml -> Packaging pom父级 - pom.xml -> 打包 pom

Module1 - pom.xml -> Packaging jar Module1 - pom.xml -> 打包jar

Module2 - pom.xml -> Packaging jar Module2 - pom.xml -> 打包jar

Web - pom.xml -> Packaging war网页 - pom.xml -> 打包战争

Parent POM父 POM

<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>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.2.0.RELEASE</version>
   <relativePath /> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.example</groupId>
  <artifactId>application-base</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <modules>
   <module>module1</module>
   <module>module2</module>
   <module>web</module>
  </modules>
  <dependencies>
            ----
  </dependencies>
</project>

Module POM模块 POM

<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>
     <groupId>com.example</groupId>
     <artifactId>application-base</artifactId>
     <version>1.0.0</version>
    </parent>
     <packaging>jar</packaging>
     <artifactId>module</artifactId>
     <name>Module</name>
     <description>/description>
    <dependencies>
      ------
    </dependencies>
</project>

Web POM网络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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
   <parent>
   <groupId>com.example</groupId>
   <artifactId>application-base</artifactId>
   <version>1.0.0</version>
   </parent>
   <artifactId>web</artifactId>
   <name>web</name>
   <packaging>war</packaging>
   <description></description>
   <dependencies>
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
     <groupId>com.example</groupId>
     <artifactId>module</artifactId>
     <version>1.0.0</version>
    </dependency>
   </dependencies>
   <build>
    <plugins>   
    </plugins>
   </build>
</project>

In your case you added packaging as a jar in web module(pom.xml), change web module packaging as a war .在您的情况下,您在 web 模块(pom.xml)中将打包添加为jar ,将 web 模块打包更改为war

Old Code旧代码

<packaging>jar</packaging>

New code新代码

<packaging>war</packaging>

Please follow the below spring boot maven multi module project guidelines for more details请按照以下 spring boot maven 多模块项目指南了解更多详细信息

Spring Official documentation Spring 官方文档
https://spring.io/guides/gs/multi-module/ https://spring.io/guides/gs/multi-module/

Git hub spring boot maven multi module example Git hub spring boot maven 多模块示例
https://github.com/spring-guides/gs-multi-module.git https://github.com/spring-guides/gs-multi-module.git

Maybe.... java ~~.war with classpath inclues ~~.jar files也许.... java ~~.war 与类路径包含 ~~.jar 文件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM