SpringBoot 的 web 项目打成 jar 包

SpringBoot 项目 打成 jar 包

很困惑的问题

IDEA 的打包工具可能不能打包 SpringBoot 项目, 各种尝试一上午没有打包一个能用的, 希望知道原因的小伙伴回复分享一下

相关 Maven 依赖

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

使用 IDEA 构建的 SpringBoot 项目都会带上面这个依赖, 但是这个依赖可能会导致打包不成功, 也肯能会成功, 我想要是这个依赖打出来的 jar 包不能使用则可以重新导入一下项目, 重新打包出来的 jar 包应该能用

上面的依赖不能使用就使用下面这个依赖

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 这里改成 SpringBoot 启动类的全限定类名 -->
                    <mainClass>springboot.DemoApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

打出来的 jar 包在 target 目录中, 可以直接使用

在Spring Boot中,如果你需要将一个Spring Boot多模块项目打包WAR(通常用于部署到传统的Web应用服务器上,如Tomcat),你需要进行一些配置上的调整。以下是将多模块项目打包WAR的基本步骤: 1. 修改父模块的`pom.xml`文件,将`spring-boot-starter-parent`的打包方式从`jar`改为`war`。同时确保移除`spring-boot-maven-plugin`插件,因为它是用于生可执行的JAR的。 ```xml <packaging>war</packaging> ``` 2. 对于每一个需要打包WAR的子模块,也需要在各自的`pom.xml`中将打包方式改为`war`。 ```xml <packaging>war</packaging> ``` 3. 如果主应用模块(通常是含`main`方法的模块)继承自`spring-boot-starter-web`,则需要移除`spring-boot-starter-tomcat`依赖,因为WAR含自己的Servlet容器。同时,添加一个依赖来代替Tomcat,比如`tomcat-embed-jasper`。 ```xml <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> ``` 注意`scope`应该是`provided`,因为Web服务器(如Tomcat)会提供它。 4. 对于使用了嵌入式Servlet容器的`@SpringBootApplication`主类,需要修改其继承的类。通常需要将继承自`SpringBootServletInitializer`的子类覆盖`configure`方法。这样做是为了配置Spring Boot应用以部署为WAR。 ```java @SpringBootApplication public class MyApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyApplication.class); } } ``` 5. 构建项目时使用Maven的`package`命令,这会生WAR而不是JAR。 ```shell mvn clean package ``` 请确保在部署WAR之前,你的应用服务器已经正确配置并且能够支持WAR的部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值