我有一个 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?
感谢。
答案 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/