SpringBoot 打可执行生产包

本文介绍了如何将SpringBoot应用打包成可执行的jar,适用于仅使用SpringBoot且需要根据不同环境配置的应用。通过详细配置,可以实现目录结构的分离,并提供了解压后的目录结构、pom配置以及assembly和脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       SpringBoot 自带模块可单独打包成可运行的jar,对于拥有整套微服务框架的企业来说是非常友好的,只需要一个配置中心,完美解决不同环境不同配置的问题,但对于只使用SpringBoot的企业来说,需要配置跟着环境走,所以百度各方资料,整理出相关配置项,让你的SpringBoot 应用可以各目录分离


执行打包命令:

mvn clean package

在当前target目录下生成程序包:

cn-rongplus-msg-receive.tar.gz 

解压后查看目录结构:

ls -al
total 8
drwxr-xr-x   8 liugang  staff   256 Aug 22 16:17 .
drwxr-xr-x  13 liugang  staff   416 Aug 22 16:17 ..
-rwxr-xr-x   1 liugang  staff   646 Jul 29 13:40 README.md
drwxr-xr-x   4 liugang  staff   128 Aug 22 16:17 bin
drwxr-xr-x   3 liugang  staff    96 Aug 22 16:17 boot
drwxr-xr-x   6 liugang  staff   192 Aug 22 16:17 conf
drwxr-xr-x  90 liugang  staff  2880 Aug 22 16:14 lib
drwxr-xr-x   2 liugang  staff    64 Aug 22 16:14 logs

 


程序pom 配置如下:

<properties>
        <main-class>cn.rongplus.msg.Bootstrap</main-class>
</properties>

<build>
        <finalName>rongplus-receive-${project.version}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>version.txt</include>
                    <include>mapper/**/*.xml</include>
                    <include>static/**</include>
                    <include>templates/**</include>
                    <include>META-INF/**</include>
                    <include>*.xml</include>
                    <include>*.yml</include>
                    <include>*.properties</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot-version}</version>
                <configuration>
                    <layout>ZIP</layout>
                    <mainClass>cn.rongplus.msg.Bootstrap</mainClass>
                    <includes>
                        <!-- 项目启动jar包中排除依赖包 -->
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <encoding>${file_encoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven_compiler_version}</version>
                <configuration>
                    <source>${java_source_version}</source>
                    <target>${java_target_version}</target>
                    <encoding>${file_encoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <!-- 添加maven 描述 -->
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <manifest>
                            <!-- 项目启动类 -->
                            <mainClass>${main-class}</mainClass>
                            <!-- 依赖的jar的目录前缀 -->
                            <classpathPrefix>../lib</classpathPrefix>
                            <addClasspath>true</addClasspath>
                        </manifest>
                        <manifestEntries>
                            <!-- 此处手工将第三方依赖的jar添加到 META-INF/MANIFEST.MF 清单 多个用空格分隔 -->
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                    <includes>
                        <!-- 只打包指定目录的文件 -->
                        <include>cn/rongplus/**</include>
                    </includes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-
Spring Boot项目中,打包生产环境的JAR通常涉及到几个关键步骤。这些步骤括配置、构建和部署。以下是具体的过程: 1. **配置**: 首先,确保项目的`pom.xml`文件(Maven项目)或`build.gradle`文件(Gradle项目)已正确设置了打包相关的属性。例如,在Maven中,你需要设置`spring-boot-maven-plugin`插件的`mainClass`属性指向主启动类。 ```xml <!-- Maven --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.YourMainClass</mainClass> </configuration> </plugin> </plugins> </build> ``` 2. **构建**: 运行命令`mvn package` (Maven) 或 `./gradlew bootRepackage` (Gradle),这将编译项目并创建一个含所有依赖项的自JAR。 3. **添加启动参数**: 有些配置可能需要外部资源,如数据库连接信息。你可以使用`spring-boot-actuator`模块的`--server.port`等命令行参数来传递这些配置。例如:`java -jar your-jar-name.jar --server.port=8080`. 4. **部署**: 将生成的JAR文件复制到服务器上,然后运行它。在Linux或Unix机器上,可以直接运行:`nohup java -jar your-jar-name.jar &`。Windows环境下则可能是`java -jar your-jar-name.jar`后跟进程管理命令。 5. **可执行战争文件**: 如果你想创建的是WAR文件而非JAR,可以在构建阶段指定`packaging=war`。 6. **监控和日志**:部署后,可能还需要考虑如何监控应用的状态和日志管理,可以使用像Logstash或ELK Stack这样的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值