org.springframework.boot:spring-boot-maven-plugin:1.5.10.RELEASE:重新包装失败:无法找到主类

时间:2018-02-07 05:55:37

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

我有以下项目结构:

parent pom
   |
   - Core module - pom
   - Dist - pom
   - Integration test - pom

Spring boot主类是在核心模块中。集成测试将进入集成测试文件夹。

我正在尝试使用spring-boot-maven-plugin进行集成测试。 我在集成测试模块中为相同的pom配置做了以下操作。 start-class属性在父pom中设置:

         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>${start-class}</mainClass>
                <layout>JAR</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
                <execution>
                    <id>pre-integration-test</id>
                    <goals>
                        <goal>start</goal>
                    </goals>
                </execution>
                <execution>
                    <id>post-integration-test</id>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

但是我在父pom上的mvn clean install上遇到以下错误:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.10.RELEASE:start (pre-integration-test) on pro

ject:Spring应用程序在配置的超时之前没有启动(30000ms - &gt; [Help 1] [ERROR]

问题:

  1. 此项目结构是组织整合的最佳方式吗? 测试?
  2. 我如何以及在哪里提供主类的路径 spring-boot-maven-plugin正确吗?即使我放弃它也不起作用 它在集成模块或父pom中甚至在给出之后 你通常会做的相对路径(例如 ../核心模块/)
  3. maven-failsafe-plugin和测试类本身的弹簧注释似乎足以运行集成测试。首先,集成测试和spring boot maven插件之间有什么关系吗?除了打包成可执行文件之外,spring boot maven插件的需求是什么。我有这种困惑,因为它有一些目标,如开始预集成测试&amp;后集成测试,但我不明白为什么需要它。
  4. PS:我已经检查了几个类似问题的问题,但没有人回答我对给定项目结构提出的问题。

1 个答案:

答案 0 :(得分:0)

我遇到了与(重新打包失败:无法找到主类)相同的错误尝试将一些Spring代码推广到一个常见的Spring启动项目中。 事实证明,由于Spring引导项目需要一个带有main方法的类,因此无法实现。

我使用直接依赖关系解决了我需要的Spring框架模块的问题,也许你可以在集成测试项目中做到这一点。

但是,我不知道你试图在单独的项目中运行什么样的测试,但是关于核心模块的测试必须在核心模块本身,使用Spring测试,而不是在单独的项目中。 (在需要的地方使用模拟)。

希望这有帮助。