Tomcat 未启动 Gradle Webapp

Tomcat not booting up Gradle Webapp

我有一个 Gradle webapp 有插件 warjettybuild.gradle中定义如下:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'

group = 'com.company'
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = '1.0'
war.baseName = 'deploy'

repositories {
    mavenLocal()
    mavenCentral()
    maven { url "http://repository.pentaho.org/artifactory/repo/" }
}
dependencies {
    ..
}

当我使用 jettyRunWar 执行 gradle 构建时,如下所示:

$ ./gradlew jettyRunWar

它按预期构建应用程序并将其部署到 Jetty。

现在我也想将相同的应用程序部署到 Tomcat7,为此,我 运行 gradle war任务如下:

$ ./gradlew war

在 运行 任务之后,我可以在 /Users/ArpitAggarwal/deploy/build/libs/ 中看到 deploy-1.0.war 并且当我尝试部署它时到 Tomcat7,它没有被 Tomcat 拾取。

我的问题是 - 我是否需要应用任何额外的插件才能将应用程序部署到 Tomcat7?

谢谢。

war 插件仅创建一个 war,它不会自行将生成的 war 部署到 tomcat。

您可以创建任务以将 war 部署到 tomcat。

task deployToTomcat(type: Copy) {
    from war.archivePath
    into "${tomcatHome}/webapps"
}

您也可以使用gradle-tomcat-plugin

问题是 .war 文件的 contextRootGradle 生成 .war 文件的 contextRoot 选择 war.baseNameversion,因此 contextRoot 更改为 deploy-1.0 并且可以在以下位置访问该应用程序:

localhost:8080/deploy-1.0

然后我从 build.gradle 中删除了版本字段,这使得 Gradle 生成 .war 并将 contextRoot 作为部署和应用程序可访问性:

localhost:8080/deploy/