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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:37