Gradle War 插件允许你将Java Web应用程序打包成WAR(Web Application ARchive)文件,这是一种标准的Java EE部署单元,包含Servlets、Java类、静态资源(如HTML、CSS、JavaScript文件)以及Web应用所需的其他资源和配置文件。以下是使用Gradle War插件的基本步骤和配置示例:
应用War插件
在build.gradle
文件中,首先需要应用War插件。War插件通常与Java插件一起使用,以确保Java编译和打包的基础配置已经就绪。
plugins {
id 'java'
id 'war'
}
配置War插件
应用War插件后,你可以进一步配置它,比如设置WAR文件的名称、包含的资源、排除的文件等。
war {
archiveName 'myWebApp.war' // 设置WAR文件的名称
classpath configurations.runtimeClasspath // 确保依赖项被包含进来
webInf { // 配置WEB-INF目录下的内容
from('src/main/webapp/WEB-INF') {
exclude '**/*.jsp' // 例如,排除所有JSP文件
}
// 如果需要,可以在这里配置web.xml或其他元数据文件
}
}
配置Spring Boot应用打包为WAR
对于Spring Boot应用,除了应用War插件外,还需要做额外的配置,以确保Spring Boot可以正确地启动嵌入式服务器中的WAR文件。这通常涉及到继承SpringBootServletInitializer
并覆盖其方法。
// 假设你的主类是 com.example.MySpringBootApplication
configurations {
providedRuntime
}
dependencies {
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
jar {
enabled = true // 保持JAR包的生成
}
war {
enabled = true // 启用WAR包的生成
classifier = 'war' // 可选,为WAR包添加分类标签
}
// 如果使用Kotlin DSL,对应的配置会略有不同
并且在你的主应用类中添加以下内容:
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class MySpringBootApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MySpringBootApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
}
}
执行打包
配置完成后,你可以使用Gradle命令来构建WAR文件:
./gradlew war
构建成功后,WAR文件会出现在build/libs
目录下,根据你的配置,可能是myWebApp.war
或其他命名。