春ブーツは、Mavenのプラグインカントメインクラス、できませんでした幹部のJavaを見つけます

春 :

私は、マルチモジュールのMaven春-booot Mavenのプロジェクトを持っています。子モジュールの一つは、私が起動してから停止することをスタブ(春ブーツアプリ)での統合テスト中に myRealApp

Parent Pom
|   
|----myRealApp module(spring boot app)
|----stub-of-some-remote-rest-api module(This is also a spring-boot app)

これは、モジュールmyRealAppのようにどのようにポンポンファイルルックスです。これはまた、すべての統合テストを持っています。その前統合テスト・フェーズスタブモジュールを起動しようとしています。私は子供のモジュールディレクトリにMavenのゴールを実行すると、私はエラーを取得します:

 mvn integration-tests -X

エラー:メインクラスio.swagger.MyStubを見つけるか、ロードできませんでした。

org.apache.maven.lifecycle.LifecycleExecutionException:春・ブートのMavenプラグイン-:ゴールorg.springframework.bootの実行に失敗しました1.5.8.RELEASE:プロジェクトの実行(スタートブート):できませんでした幹部のJava

私は作業ディレクトリが正しく設定されていることをデバッグモードで見ることができます。

myRealAppのポンポン:

         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>${spring.boot.mainclass}</mainClass>
            </configuration>
            <executions>
                <execution>
                    <configuration>
                        <workingDirectory>${project.parent.basedir}/module-of-my-stub/src/main/java</workingDirectory>
                        <mainClass>io.swagger.MyStub</mainClass>
                    </configuration>
                    <id>start-boot</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
                <execution>
                    <id>stop-boot</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>

        </plugin>

たぶん私は、個々の実行にセットWORKINGDIRECTORYに許可、または他のモジュールへの参照を与えていないのですか?

スタブは、実際のリモートサービスのテスト環境は、信頼性がありませんでしたし、時間の半分ダウンしていたので、私は、開発中に使用私のアプリケーションが依存されているリモートRESTサービス、のように振る舞っています。だから、あまりにも統合テストでそれを使用することにしました。

df778899:

質問に対するコメントの一部を統合するために、これらは基本的にアドバイスに従って、この他の答え

キーが設定されたclassesDirectory反対spring-boot-maven-plugin:runを指すように目標target\classes他のプロジェクトの下のディレクトリ。

  <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <mainClass>${spring.boot.mainclass}</mainClass>
        </configuration>
        <executions>
            <execution>
                <id>start-stub</id>
                <configuration>
                    <arguments>
                        <argument>--server.port=8090</argument>
                    </arguments>
                    <mainClass>io.swagger.Stub</mainClass>
                    <classesDirectory>../my-stub/target/classes</classesDirectory>
                </configuration>
                <goals>
                    <goal>start</goal>
                </goals>
                <phase>pre-integration-test</phase>
            </execution>

            <execution>
                <goals>
                    <goal>build-info</goal>
                </goals>
            </execution>
        </executions>
  </plugin>

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=192289&siteId=1