Tomcat无法启动Gradle Webapp

时间:2015-12-26 08:13:48

标签: eclipse tomcat gradle build.gradle gradlew

我有一个 Gradle webapp ,在 build.gradle中定义了插件 war jetty ,如下:

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?

感谢。

2 个答案:

答案 0 :(得分:1)

war插件只会创建一个war,它不会将生成的war部署到tomcat本身。

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

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

您也可以使用gradle-tomcat-plugin

答案 1 :(得分:0)

contextRoot 文件的 .war 问题。 Gradle 会生成.war文件的contextRoot,选择 war.baseName version ,以便将contextRoot更改为部署-1.0并且可以通过以下方式访问该应用程序:

localhost:8080/deploy-1.0

然后我从 build.gradle 中删除了版本字段,这使得Gradle生成.war,并将contextRoot作为部署和应用程序辅助功能在以下位置:

localhost:8080/deploy/