【问题标题】:MVN springboot plugin outputs bad tomcat deployable WARMVN springboot 插件输出错误的 tomcat 可部署 WAR
【发布时间】:2017-12-17 12:20:17
【问题描述】:

我正在尝试使用命令行中的 maven 从 Spring Boot 项目中创建一个 WAR 文件以部署在 tomcat 上。

我已经对这里推荐的 POM 文件进行了修改: http://blog.codeleak.pl/2014/04/how-to-spring-boot-and-thymeleaf-with-maven.html

但是,当我分解生成的 WAR 文件时,我会看到如下文件结构:

META-INF/  
org/  
WEB-INF/ 

这与 IntelliJ 输出的不同:

META-INF/  
WEB-INF/  

此外,WEB-INF 文件夹中还有许多丢失的文件夹和文件,例如 application.properties 文件。

我错过了什么?我整天都在为此苦苦挣扎……

项目代码库基本包含在两个文件夹中

src/main/com/.../packagename  
src/main/resources

这是 POM 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.packagename</groupId>
    <artifactId>findeme</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>

    <repositories>
        <repository>
            <id>marketpower</id>
            <url>https://github.com/marketpower/sdk-java/raw/master/releases</url>
        </repository>
    </repositories>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
        <relativePath />
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-messaging</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
            <version>1.9.21</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- TOMCAT -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.1.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.barcode4j</groupId>
            <artifactId>barcode4j</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-bridge</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>net.sargue</groupId>
            <artifactId>mailgun</artifactId>
            <version>1.4.0</version>
        </dependency>

        <!-- payments -->
        <dependency>
            <groupId>com.marketpower</groupId>
            <artifactId>sdk</artifactId>
            <version>0.3.4</version>
        </dependency>

    </dependencies>

    <properties>
        <start-class>com.packagename.findeme.App</start-class>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.jasper</include>
                </includes>
            </resource>
        </resources>
    </build>

</project>

【问题讨论】:

  • 请提供一些代码,例如您的 pom 文件和游览项目结构
  • 嗨,您现在可以在我的问题正文中看到 POM 文件。代码基本上包含在两个文件夹中:src/main/com/../packagename 和 src/main/resources。谢谢。
  • 所以用命令行maven创建的maven看起来更完整了?它有效吗?可能只是 Intellij 的问题,它没有将项目识别为 web 项目!
  • 实际上它不起作用或者我不知道如何使它起作用。我想将它部署在外部 tomcat 中,但与 intelliJ 生成的 WAR 相比,它似乎缺少文件。例如,我不知道如何配置与数据库的连接,因为没有 application.properties 文件。 WEB-INF/classes 中还缺少三个文件夹:META-INF、public 和 templates。我不明白发生了什么。
  • 注意你只包含 *.jasper 文件,也许这就是问题所在。

标签: maven tomcat war spring-boot-maven-plugin


【解决方案1】:

尝试包括所有资源,而不仅仅是 *.jasper 文件

    <resources>
        <resource>
            <directory>src/main/java</directory>
          <!--  <includes> -->
          <!--      <include>**/*.jasper</include> -->
         <!--   </includes> -->
        </resource>
    </resources>

【讨论】:

  • 我不知道是谁在其中添加了该限制...出于某种原因,intelliJ 只是忽略了它。谢谢!
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多