如何在IntelliJ中生成Jakarta EE及Java动态Web项目的可执行文件?
问题1:在IntelliJ中制作Jakarta EE项目的可执行文件
Jakarta EE项目默认产出WAR包,若要生成可执行文件,通常有两种实现路径:生成可执行WAR包(依赖外部服务器),或是打包为带内嵌Jakarta EE服务器的独立JAR包,以下是IntelliJ中的具体操作:
方式1:生成可执行WAR包
- 打开项目后,点击顶部菜单栏
File->Project Structure(快捷键Ctrl+Alt+Shift+S) - 左侧面板选择
Artifacts,点击+号,依次选择Web Application: Exploded->From Modules...,选中目标项目模块;再次点击+号,选择Web Application: Archive->For [你的模块名] - 在配置窗口勾选
Include in project build,点击OK保存 - 返回主界面,点击
Build->Build Artifacts...,选择对应WAR包,点击Build或Rebuild - 生成的WAR包可直接部署到Tomcat、WildFly等兼容的Jakarta EE服务器运行
方式2:打包为带内嵌服务器的可执行JAR包
如果项目用Maven或Gradle管理,可通过配置插件实现:
Maven配置示例
在pom.xml中添加WildFly内嵌服务器插件:
<build> <plugins> <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>4.2.0.Final</version> <executions> <execution> <phase>package</phase> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 打开IntelliJ右侧
Maven面板,执行package目标,生成的JAR包可直接通过java -jar [文件名].jar启动
Gradle配置示例
在build.gradle中添加bootable JAR插件:
plugins { id 'war' id 'org.wildfly.build.bootable-jar' version '8.0.0.Final' } bootableJar { serverDir = file('/path/to/wildfly') // 可指定本地WildFly目录或使用远程包 }
- 执行
bootableJar任务,生成的JAR包可独立运行
问题2:将Tomcat动态Web项目打包为可执行JAR(无需编辑器运行)
传统Tomcat动态Web项目依赖外部Tomcat服务器运行,要做成独立可执行JAR,需整合内嵌Tomcat,具体步骤如下:
步骤1:调整项目依赖(Maven为例)
在pom.xml中添加内嵌Tomcat依赖和打包插件:
<dependencies> <!-- 内嵌Tomcat核心依赖 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>10.1.17</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>10.1.17</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>10.1.17</version> </dependency> </dependencies> <build> <plugins> <!-- Maven Shade插件,用于打包可执行JAR --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 指定自定义启动类的全路径 --> <mainClass>com.example.TomcatStarter</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
步骤2:编写Tomcat启动类
创建主类用于启动内嵌Tomcat,示例代码:
package com.example; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; import java.io.File; public class TomcatStarter { public static void main(String[] args) throws LifecycleException { Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); // 设置服务端口 // 指定Web应用根目录(对应项目的src/main/webapp) String webappDir = "src/main/webapp/"; Context context = tomcat.addWebapp("", new File(webappDir).getAbsolutePath()); // 配置类文件目录 String classesDir = "target/classes"; tomcat.addContext("", new File(classesDir).getAbsolutePath()); tomcat.start(); tomcat.getServer().await(); // 保持服务运行 } }
步骤3:打包并运行
- 打开IntelliJ右侧
Maven面板,执行package任务 - 打包完成后,在
target目录下找到生成的可执行JAR包 - 命令行执行
java -jar [你的JAR文件名].jar,即可独立启动项目,无需依赖外部Tomcat或编辑器
内容的提问来源于stack exchange,提问作者Sebastian Schedl
相关产品推荐
相关产品推荐

