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

没有嵌入tomcat的spring boot war

洪雨石
2023-03-14

我想用Maven创建一个不嵌入tomcat的war文件。这里是我的pom的相关部分

...
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- Add tomcat only if I want to run directly -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...

如果我运行mvn包,我会得到一个war,其中tomcat*.jar位于provided-lib文件夹中,但仍然位于lib-folder中。我读了build-tool-plugins-maven-packaging,但找不到有什么问题。

我知道一个主要的想法是将它作为一个应用程序来运行,无论我们的客户想要如何将它部署在他的应用程序服务器上。

共有1个答案

松波
2023-03-14

根据M.Deinum的提示,我排除了Tomcat-dependency。

通过下面的pom.xml(相关片段),Maven clean Package得到了我想要得到的结果。

...
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- Add tomcat only if I want to run directly -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...

对idea-user的警告:您必须在运行配置中激活“包含与所提供范围的依赖关系”(有关更多信息,请参见无法在IntelliJ Idea中启动spring-boot应用程序)

 类似资料:
  • 我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?

  • null ServerEndpoint: 谢谢你。

  • 这是个无用的主意吗?

  • 问题内容: 我需要在Tomcat中启动Hazelcast,而无需单独的war文件。因此,将hazelcast.jar放入lib文件夹中的hazelczast.xml某处…接下来呢?还是不可能? 问题答案: 第一步是好的,只需将Hazelcast lib和配置放在Tomcat的libs文件夹中。接下来,如果您不需要单独的WAR文件,则是构建一个小的Valve类来启动/关闭Hazelcast节点。问题

  • 我试图让Spring Boot中的嵌入式Tomcat记录到我的Log4J2配置中,但它不起作用。 根据这个与外部Tomcat打交道的答案:https://stackoverflow.com/a/28639068/1845463似乎有必要将一些罐子移到$Catalina_home/libs等。我认为这在Spring Boot中是不可能的,不是吗? 有人设法让log4j2运行,并能够为catalina

  • 问题内容: 我想创建一个不带maven嵌入式tomcat的war文件。这是我pom的相关部分 如果我运行mvn软件包,我会大战一场,其中tomcat * .jar位于提供的lib文件夹中,但仍位于lib文件夹中。我读了build-tool-plugins-maven-packaging,但是找不到问题所在。 我知道一个主要想法是将其作为应用程序运行,无论我们的客户如何将其部署在他的应用程序服务器上