【发布时间】:2015-12-26 17:46:05
【问题描述】:
我有一个 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?
谢谢。
【问题讨论】:
-
不,你不需要任何额外的插件,你应该能够将同样的战争部署到 tomcat。您在tomcat启动中看到任何错误吗?我刚刚创建了一个战争并将其部署到 tomcat 并且运行良好。
-
tomcat 日志中没有错误。 Tomcat 在没有启动
.war的情况下启动良好,我认为 Tomcat 不知道.war文件不知何故。我也尝试使用 Eclipse,首先“添加 Web 模块”被禁用,当我尝试使用“添加外部 Web 模块”添加它时,它没有启动。 -
我也定期将gradle war插件生成的war部署到tomcat。但是gradle war插件不适合我。它只是在我的构建目录中生成一个战争文件。我使用 bash 或其他工具来部署,并且使用 Tomcat 默认安装,您只需将战争复制到 .../webapps/ 并让 Tomcat 部署它。有一个用于 gradle 的 tomcat 插件,用于部署 war 文件。可能还有其他方法可以做到这一点。
-
哦,我以为你是手动部署的。
war插件不这样做,它只创建一个war文件。因此,您要么必须手动部署它,要么添加一些其他插件。 -
我尝试仅手动部署,但从 Eclipse 启动服务器并且
.war没有被 Tomcat 拾取(不知道为什么),然后我尝试从有效的命令启动服务器。但这引发了另一个问题,我正在与您一起写一个答案。
标签: eclipse tomcat gradle build.gradle gradlew