美文网首页Spring Boot
IntelliJ IDEA 导出 Spring Boot WAR

IntelliJ IDEA 导出 Spring Boot WAR

作者: _10_01_ | 来源:发表于2016-11-08 17:05 被阅读1145次

使用 Spring Boot 官方示例代码 rest-service 并点击 “运行”,因为 Spring Boot 内嵌了 Tomcat 模块,所以在 idea 中直接点击 Run 运行程序;有时需要部署独立外部容器中去,所以需要生成 WAR 包。

新建的项目 Build Artifacts 是灰色的,无法点击,导致无法生成 WAR 包;

Build Artifacts
build.gradle 文件中添加:
apply plugin: 'war'

war {
    baseName = 'myapp'  // war 包名
    version =  '0.5.0'  // 版本号
}

当 Gradle 构建成功之后,Build Artifacts 会变量,此时就能生成 WAR 包了;

Build Success
使用外部容器(如:Tomcat)还需要添加 providedRuntime 配置。

官方示例代码

...
apply plugin: 'war'

war {
    baseName = 'myapp'
    version =  '0.5.0'
}

repositories {
    jcenter()
    maven { url "http://repo.spring.io/libs-snapshot" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
    ...
}

此时的生成的 WAR 包在 Tomcat 中还不能正确访问,需要让 main class main 方法所在类继承 SpringBootServletInitializer,并重写 configure 方法,再生成 WAR 包将可在 Tomcat 中访问。

官方示例代码

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

注意:部署到 Tomcat 以后,访问这个项目的时候,须要带上这个项目的 war 包名 + 版本名(myapp-0.5.0)。 李威威

相关文章

网友评论

    本文标题:IntelliJ IDEA 导出 Spring Boot WAR

    本文链接:https://www.haomeiwen.com/subject/amgauttx.html