当前位置: 首页 > 知识库问答 >
问题:

Gradle没有创建Tomcat可部署战争

阎承
2023-03-14

我遇到了一个与Gradle 4.8.1建立战争的问题。这是构建。格拉德尔:

buildscript {
    ext {
        springBootVersion = '2.0.3.RELEASE'
    }
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    }
}

apply plugin: 'idea'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'org.springframework.boot'
apply plugin: 'war'

archivesBaseName = 'sample'

//war {
//    archiveName = 'sample.war'
//    group = 'my.group'
//    version = '2.0.0-SNAPSHOT'
//}

sourceCompatibility = 1.8

repositories {
    jcenter()
    maven { url "${nexusUrl}/content/groups/public" }
}

dependencies {

    // Spring
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    compile 'org.springframework.boot:spring-boot-starter-log4j2'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    compile 'org.springframework.boot:spring-boot-starter-web'
    testCompile 'org.springframework.boot:spring-boot-starter-test'

    // Lombok
    compile "org.projectlombok:lombok:1.18.0"

    // Data
    compile ('org.postgresql:postgresql') {
        exclude module: 'slf4j-simple'
    }

    // Http
    compile "org.apache.httpcomponents:httpclient:4.5.5"
}

configurations {
    all*.exclude module: 'spring-boot-starter-logging'
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "${nexusUrl}/content/groups/public/") {
                authentication(userName: nexusUsername, password: nexusPassword)
            }
            snapshotRepository(url: "${nexusUrl}/content/repositories/snapshots") {
                authentication(userName: nexusUsername, password: nexusPassword)
            }
            pom.version = '2.0.0-SNAPSHOT'
            pom.artifactId = 'sample'
            pom.groupId = 'my.group'
        }
    }
}

我还尝试删除“maven”插件、archivesBaseName和uploadArchive任务,同时取消对war任务的注释,得到了相同的结果。使用uploadArchive时,war可以很好地部署到nexus服务器,我没有发现任何错误。在将war部署到tomcat(在这两种情况下)时,tomcat 7和8不会抛出错误,我也不会收到来自catalina或项目的日志,尽管war任务中的archiveName不会正确重命名war。我在另外两台机器/tomcat实例上尝试过这个方法,结果相同。当将其构建为胖jar或在IntelliJ中运行时,一切都按预期工作(包括日志记录)。

任何帮助或指导将不胜感激。

共有2个答案

唐兴思
2023-03-14

我也面临着同样的问题。问题是当war部署在tomcat上时,Spring应用程序不会初始化。

经过很多努力,我发现我需要在我的应用程序中扩展SpringBootServletInitializer。所以我的有效代码看起来像

    public class SyncApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SyncApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(SyncApplication.class, args);
    }

}

看起来,SpringBootServletializer引导war插件在构建war时生成引导代码,因此在部署应用程序时初始化spring上下文。

高山
2023-03-14

听起来它根本没有初始化servlet。请确保为WAR部署扩展SpringBootServletLaunalizer。

  • Spring Boot Docs-传统部署
 类似资料:
  • 我正在寻找一种方法,可以在我选择的时候将战争工件部署到IntelliJ启动的Tomcat中。我有一个项目,它的配置启动了Tomcat8服务器并部署了一些工件。LaterI现在希望将更多来自不同项目的工件部署到同一个IntelliJ启动的Tomcat中。 步骤:启动包含Tomcat的项目 步骤:从另一个IntelliJ-project(从IDE内)部署war 步骤:从IntelliJ部署另一个war

  • 我用命令运行了一个spring boot web应用程序。但是,当将打包字段更改为war(在pom.xml中)并将其构建为war时,它未能在tomcat 7中运行。 我把我pom.xml的父母变成: 而且: 我的错误是: 我的问题是: 这里发生了什么,如何克服? 使用Spring-start真的安全吗?因为嵌入式服务器库似乎影响了它部署到j2ee容器中的可靠性。我知道,它仍然是Milestone版

  • 我遵循spring boot参考文档,分两步创建一个可执行和可部署的war: 在pom文件中,制作一个war包,并提供spring boot starter tomcat范围 使应用程序类扩展SpringBootServletializer并重写configure方法 然后将war文件复制到{jetty_home}/webapps。 我试着重新启动jetty服务器,似乎战争加载了以下信息 Visi

  • 我试图调试将现有spring boot应用程序部署为应用程序时出现的问题。war文件,即使在最小的情况下也无法使其工作。 具体而言,我: 跟随https://spring.io/guides/gs/spring-boot/至此,我可以成功运行jar文件并使用curl连接到它 跟随https://docs.spring.io/spring-boot/docs/current/reference/ht

  • 我在使用WAR文件将web应用程序从Eclipse部署到Linux上的Tomcat服务器时遇到了问题。我使用的是Tomcat 7.0.53。在本地部署时,我可以创建指定的文件夹路径,这些路径放入文件夹共享中,并将文件放置在这些位置。当试图通过Tomcat服务器上部署的WAR执行这些过程时,不会创建该文件夹共享中的目录,也不会放置文件。通过日志记录,我知道这些文件夹目标和文件是创建的。这背后有什么可

  • 在Ubuntu 16.04上,我使用以下命令停止tomcat7服务器: 然后我创建了一个war文件,如下所示: 我将war文件复制到webapps目录: 我使用命令:sudo service tomcat7 start调出tomcat 这样,下面的url显示服务器正在工作: 据我所知,下面的URL应该转到. war文件localhost:8080/test 它不起作用。(404错误)我做错了什么?