You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spring-MVC、Spring-Data和PostgreSQL创建Java可执行exe与内嵌PostgreSQL的JAR

内嵌PostgreSQL的Spring应用打包及exe制作步骤

一、集成内嵌PostgreSQL到Spring-MVC项目

原来的Jar包无法运行的核心原因是依赖外部PostgreSQL服务,需要将PostgreSQL嵌入到应用中,随应用启动自动运行:

  • 引入内嵌PostgreSQL依赖,在pom.xml中添加如下配置:
<dependency>
    <groupId>io.zonky.test</groupId>
    <artifactId>embedded-postgresql</artifactId>
    <version>2.0.7</version>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.5.4</version>
</dependency>
  • 配置内嵌PostgreSQL及数据源参数,在application.properties中添加:
# 内嵌PostgreSQL配置
embedded.postgresql.port=5433
embedded.postgresql.database-name=app_db
embedded.postgresql.username=app_user
embedded.postgresql.password=app123
# 配置数据持久化路径,重启应用数据不丢失
embedded.postgresql.data-directory=./pg_data

# Spring数据源配置(对接内嵌PostgreSQL)
spring.datasource.url=jdbc:postgresql://localhost:5433/app_db
spring.datasource.username=app_user
spring.datasource.password=app123
spring.datasource.driver-class-name=org.postgresql.Driver

# Spring-Data JPA配置(使用JPA时添加)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
  • 添加强制启动优先级配置,确保内嵌PostgreSQL先于数据源初始化,新建配置类:
@Configuration
@Order(Ordered.HIGHEST_PRECEDENCE)
public class EmbeddedPostgresConfig {
    // 依赖会自动读取前缀为embedded.postgresql的配置,自动启动PG实例
}

二、打包为可执行Jar包

推荐使用Spring Boot打包插件,无需修改原有Spring-MVC业务代码:

  • 配置pom.xml打包插件:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.7.18</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 替换为你项目的Spring Boot启动类全路径 -->
                <mainClass>com.xxx.MyApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>
  • 执行打包命令:mvn clean package,打包完成后target目录下生成的xxx.jar就是可执行Jar,可先执行java -jar xxx.jar测试是否正常启动、数据库功能是否正常。

三、制作Windows可执行exe文件

提供两种通用方案,可根据JDK版本选择:

方案1:使用JDK自带jpackage工具(JDK14及以上版本推荐)

无需额外安装第三方工具,执行如下命令即可生成exe:

jpackage --type exe --input ./target --main-jar 你的jar包文件名.jar --main-class org.springframework.boot.loader.JarLauncher --name 应用名称 --app-version 1.0.0 --icon ./应用图标.ico --win-shortcut --win-menu

参数说明:

  • --win-shortcut:安装后生成桌面快捷方式
  • --win-menu:添加到Windows开始菜单
  • 如需查看运行日志,可添加--win-console参数启动时弹出控制台窗口

方案2:使用Launch4j工具(支持JDK8及以上版本)

  1. 打开Launch4j工具,配置输出exe文件路径
  2. 选择上一步打包好的可执行Jar文件
  3. 配置最小支持JRE版本,比如1.8.0
  4. 可按需配置JVM启动参数、exe图标、程序名称等信息
  5. 点击构建即可生成exe文件,可将JRE和exe放在同一目录分发给用户,无需用户提前安装JDK

注意事项

  • 内嵌PostgreSQL的data目录建议配置为相对路径,数据会保存在exe同级目录下,不会随程序卸载丢失
  • 分发exe时建议将对应版本的JRE一起打包,避免用户环境JDK版本不兼容导致运行失败
  • 如果不需要用户可见数据库内容,可将pg_data目录设置为隐藏属性

内容的提问来源于stack exchange,提问作者3Tipo Qudrado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:36:03