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

Micronaut 如何像Spring Boot、Grails一样同时构建fatjar和war包?

Micronaut同时构建fatjar和war包实现方案

完全可以实现,只需要调整对应构建工具的配置即可,操作和Spring Boot、Grails的配置逻辑基本一致,以下分别是Gradle和Maven两种构建工具的配置方法:

Gradle 配置

默认创建的Micronaut Gradle项目已经自带com.github.johnrengelman.shadow插件用于构建fatjar,只需要补充war包相关配置即可:

  • 首先在build.gradle中引入war插件
  • 添加Servlet API相关依赖,设置运行时依赖为provided scope:
dependencies {
    implementation("io.micronaut.servlet:micronaut-servlet-api")
    providedRuntime("io.micronaut.servlet:micronaut-http-server-servlet")
    // 原有其他依赖保持不变
}
  • 可以按需自定义war包的名称、输出路径等配置:
war {
    archiveName = "demo-app.war"
}
  • 执行./gradlew build命令后,会在build/libs目录下同时生成带-all后缀的fatjar文件,以及后缀为.war的可部署war包。

Maven 配置

默认创建的Micronaut Maven项目已经自带maven-shade-plugin插件用于构建fatjar,补充war插件配置即可:

  • 保留pom.xml顶部默认的<packaging>jar</packaging>配置不变,新增maven-war-plugin插件配置,将war构建目标绑定到package阶段:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.2</version>
    <executions>
        <execution>
            <id>build-war-package</id>
            <phase>package</phase>
            <goals>
                <goal>war</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <packagingIncludes>META-INF/services/**,WEB-INF/classes/**,WEB-INF/lib/**</packagingIncludes>
        <warName>demo-app</warName>
    </configuration>
</plugin>
  • 添加Servlet相关依赖,scope设置为provided:
<dependency>
    <groupId>io.micronaut.servlet</groupId>
    <artifactId>micronaut-http-server-servlet</artifactId>
    <scope>provided</scope>
</dependency>
  • 执行./mvnw package命令后,会在target目录下同时生成fatjar和war包。

注意:如果生成的war包需要部署到Tomcat、Jetty等外部Servlet容器,需要额外新增一个启动类,继承ServletMicronautInitializer,容器会自动识别该类完成Micronaut上下文初始化:

import io.micronaut.servlet.http.ServletMicronautInitializer;

public class AppServletInitializer extends ServletMicronautInitializer {
}

内容的提问来源于stack exchange,提问作者Feng Yu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:36:08