使用 Gradle 给Spring boot打 jar ,同时也把JSP打进去.
通常打war 包就简单了 。因为war 包是在Tomcat 里面运行, 这里就不说了。
脚本如下:
buildscript {
ext {
springBootVersion = 1.4.2.RELEASE
}
repositories {
maven { url "http://repo.spring.io/libs-milestone" }
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: java
apply plugin: eclipse-wtp
apply plugin: idea
apply plugin: org.springframework.boot
apply plugin: war
//打WAR
war {
baseName = chexian
version = 0.0.1-SNAPSHOT
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
maven { url "http://repo.spring.io/libs-milestone" }
}
configurations {
providedRuntime
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("javax.servlet:jstl:1.2")
runtime("mysql:mysql-connector-java")
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile ("org.springframework.boot:spring-boot-starter-web")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
providedRuntime org.apache.tomcat.embed:tomcat-embed-jasper
}
eclipse {
classpath {
containers.remove(org.eclipse.jdt.launching.JRE_CONTAINER)
containers org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8
}
}
如果打的是jar ,因为jar 是独立运行,而不是在容器里面运行。 这jar 放到任何java 环境下,只要运行 java -jar xx.jar ,你的应用的可以运行起来。 而不需要在运行前安装容器tomcat 等. 是挺方便的。
但,用按打war 方式直接打jar 。jar 是没有办法运行的起来的。 主要的原因是JSP 问题: An executable jar will not work because of a hard coded file pattern in Tomcat.
所以在打jar 的时候,要把jsp 放在目录META-INF/resources下.
脚本如下:
buildscript {
ext {
springBootVersion = 1.4.2.RELEASE
}
repositories {
maven { url "http://repo.spring.io/libs-milestone" }
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: java
apply plugin: eclipse-wtp
apply plugin: idea
apply plugin: org.springframework.boot
//打jar 名称和版本
jar {
baseName = chexian
version = 0.0.1-SNAPSHOT
}
//在打jar的时候必须把webapp目录下的文件拷贝到META-INF/resources下
jar.into(META-INF/resources) {
from(src/main/webapp)
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
maven { url "http://repo.spring.io/libs-milestone" }
}
configurations {
providedRuntime
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("javax.servlet:jstl:1.2")
runtime("mysql:mysql-connector-java")
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile ("org.springframework.boot:spring-boot-starter-web")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
providedRuntime org.apache.tomcat.embed:tomcat-embed-jasper
}
eclipse {
classpath {
containers.remove(org.eclipse.jdt.launching.JRE_CONTAINER)
containers org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8
}
}
