web-dev-qa-db-ja.com

SpringApplicationConfigurationが見つかりません:誤ったspring-boot-starter-testコンテンツ?

Mavenでコンパイルエラーを取得する:

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /C:/prototypes/demo-sse-spring-boot-master/src/test/Java/com/cedric/demo/sse/SseDemoApplicationTests.Java:[6,37] package org.springframework.boot.test does not exist
[ERROR] /C:/TITAN/demo-sse-spring-boot-master/src/test/Java/com/cedric/demo/sse/SseDemoApplicationTests.Java:[10,2] cannot find symbol
  symbol: class SpringApplicationConfiguration
[INFO] 2 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

Mavenリポジトリにはjarが存在するようです:

enter image description here

ただし、そのjarにはコンパイル済みクラスが含まれていません。 META-INFディレクトリのみ:

enter image description here

それは設計によるものですか? Mavenを幸せにするためのSpringApplicationConfigurationクラスを含むjarはどこで入手できますか?

Pom.xmlの関連部分は次のとおりです。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <Java.version>1.8</Java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.webjars.bower</groupId>
            <artifactId>jquery</artifactId>
            <version>2.1.3</version>
        </dependency>

        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.4</version>
        </dependency>
    </dependencies>

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

spring-boot-starter-testは、他のすべてのSpring Bootスターターと同様に、実際には他の多くの依存関係を推移的に取り込む単なるポンポンです。 pomのみの依存関係が気に入らないビルドシステムを満足させるためのjarファイルのみがあります。

Spring Boot 1.4からSpring Boot 1.5にアプリケーションをアップグレードしたようです。 Spring Boot 1.5は、org.springframework.boot.test.SpringApplicationConfigurationなど、1.4で非推奨になった多くのクラスを削除します。

Spring Boot 1.4.4.RELEASEに戻​​って非推奨の警告をすべて修正することをお勧めします。これで、Spring Boot 1.5.1.RELEASEに問題なくアップグレードできるはずです。

18
Andy Wilkinson

リリースでは、@SpringApplicationConfiguration注釈はもう存在しません。新しい注釈は次のとおりです。

@RunWith(SpringRunner.class)

@SpringBootTest(classes = YourApplicationMainClass.class)

@WebAppConfiguration
76
Mohamed

このエラーは、Spring Bootの1.4から1.5へのアップグレードが原因であるため、1.4で導入されたいくつかの新しいクラスは、1.5で最終的に削除される既存のクラスの一部を廃止したことに注意することが重要です(下から)。そのような詳細は、次の場所にあります: Spring boot release notes

ウェブサイトから引用(編集):

さらに、Spring Boot 1.4(およびそれ以上)は、Spring Bootテストを実行できるさまざまな方法を合理化および簡素化しようとします。新しい@SpringBootTestアノテーションを使用するには、以下を移行する必要があります。

From@SpringApplicationConfiguration(classes=MyConfig.class)to@SpringBootTest(classes=MyConfig.class)

@ContextConfiguration(classes=MyConfig.class, loader=SpringApplicationContextLoader.class)から@SpringBootTest(classes=MyConfig.class)

@IntegrationTestから@SpringBootTest(webEnvironment=WebEnvironment.NONE)

@IntegrationTestwith@WebAppConfigurationto@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

@WebIntegrationTestから@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

ヒントテストの移行中に、@RunWith(SpringJUnit4ClassRunner.class)宣言をSpring 4.3の読みやすい@RunWith(SpringRunner.class)に置き換えることもできます。

16
VanagaS