如何使用module-info.java创建模块化的spring-boot应用程序

时间:2018-08-19 09:45:15

标签: java maven spring-boot intellij-idea

我正在尝试创建在spring-boot RELEASE.2.0.3上运行的模块化微服务

我最近发现,在升级intellij IDEA时,我的spring-boot应用程序无法正确启动。

我回到发布在GitHub(https://github.com/jactor-rises/jactor-rises)上的代码,只是发现它没有同时使用mvn spring-boot:run来运行...

问题: 使用maven构建发布在GitHub上的构建工作正常。我使用错误的配置来构建并使用以下代码更新了jactor-persistence-orm中的maven pom:

修改属性

<properties>
    ...
    <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
    <maven-surefire-plugin.version>2.22.0</maven-surefire-plugin.version>
</properties>

编辑编译器插件

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler-plugin.version}</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>

编辑过的surefire插件

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin.version}</version>
        </plugin>

我还通过添加关键字open编辑了module-info.java

open module jactor.rises.persistence.orm {
    requires jactor.rises.commons;
    ...

现在,该项目可以像模块化Java 10应用程序一样正常编译,但是由于无效的spring-context,我的spring集成测试失败了。所有测试在我的IntelliJIdea上都运行良好,但是在命令行上执行maven时,它们将失败...

我无法理解出什么问题了,希望有人能发现它...

最简单的测试(加载弹簧配置):JactorPersistenceTest.java

surefire报告:

-------------------------------------------------------------------------------
Test set: com.github.jactor.rises.persistence.JactorPersistenceTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.015 s <<< FAILURE! - in com.github.jactor.rises.persistence.JactorPersistenceTest
com.github.jactor.rises.persistence.JactorPersistenceTest  Time elapsed: 0.015 s  <<< ERROR!
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

0 个答案:

没有答案