Gradle | 配置Tomcat插件
Gradle | 使用Tomcat插件作为Servlet容器
前述
Gradle 4.10.2
使用的插件为bmuschko/gradle-tomcat-plugin.
使用Tomcat插件
build.gradle
以一个Spring MVC项目为测试, 此处使用的是Tomcat9. 注释中给出了说明.
apply plugin: 'idea'
apply plugin: 'war' // 引入war插件, 它默认包含java插件
apply plugin: 'com.bmuschko.tomcat' //tomcat: 插件
group 'yag.sample'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
// tomcat: 以下配置会在第一次启动时下载插件二进制文件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-tomcat-plugin:2.5'
}
}
// 配置阿里源
allprojects {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
dependencies {
testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
runtime 'javax.servlet:jstl:1.1.2' // Servlet容器必需
compile group: 'org.springframework', name: 'spring-context', version: '5.1.2.RELEASE'
compile group: 'org.springframework', name: 'spring-beans', version: '5.1.2.RELEASE'
compile group: 'org.springframework', name: 'spring-core', version: '5.1.2.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.2.RELEASE'
// tomcat: 将Tomcat运行时库添加到配置tomcat中: (此处为Tomcat9)
def tomcatVersion = '9.0.1'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
// tomcat: 一些协议设置
tomcat {
httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
ajpProtocol = 'org.apache.coyote.ajp.AjpNio2Protocol'
}
// UTF-8
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
运行
在项目根目录中执行gradle tomcatRun
:
访问http://localhost:8080/spring-framework-sample
(spring-framework-sample
是项目名):
其他运行命令
译自官方说明.
Task Name | Depends On | Type | Description |
---|---|---|---|
tomcatRun | - | TomcatRun | 启动Tomcat实例并将Web应用程序部署到该实例。 |
tomcatRunWar | - | TomcatRunWar | 启动Tomcat实例并将WAR部署 |
tomcatStop | - | TomcatStop | 停止Tomcat实例 |
tomcatJasper | - | TomcatJasper | 运行JSP编译器并使用Jasper将JSP页面转换为Java源代码。 |
其他配置
Tomcat 配置
以下是一个来自官方项目repo中的配置示例, 更多配置信息见gradle-tomcat-plugin下的说明.
tomcat {
httpPort = 8090
httpsPort = 8091
enableSSL = true
contextPath = 'sample-app'
users {
user {
username = 'user1'
password = '123456'
roles = ['developers', 'admin']
}
user {
username = 'user2'
password = 'abcdef'
roles = ['manager']
}
}
}
其他Tomcat版本
来自官方说明.
Tomcat 6.0.x:
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = '6.0.51'
tomcat "org.apache.tomcat:catalina:${tomcatVersion}",
"org.apache.tomcat:coyote:${tomcatVersion}",
"org.apache.tomcat:jasper:${tomcatVersion}"
}
Tomcat 7.0.x:
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = '7.0.76'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
Tomcat 8.0.x:
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = '8.0.42'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
Tomcat 8.5.x:
Please be aware that the dependency tomcat-embed-logging-juli
is only required to enable container logging via Log4J 1.x (which is no longer support by the Log4J community). Log4J 2.x can be used for container logging without declaring any extra libraries.
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = '8.5.16'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:8.5.2",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
tomcat {
httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
ajpProtocol = 'org.apache.coyote.ajp.AjpNio2Protocol'
}
Tomcat 9.0.x:
Please be aware that the dependency tomcat-embed-logging-juli
is only required to enable container logging via Log4J 1.x (which is no longer support by the Log4J community). Log4J 2.x can be used for container logging without declaring any extra libraries.
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = '9.0.1'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
tomcat {
httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
ajpProtocol = 'org.apache.coyote.ajp.AjpNio2Protocol'
}