web-dev-qa-db-ja.com

SpringBootアプリを別のプロジェクトにインポートする

そのため、別のプロジェクト(テストフレームワーク)の依存関係としてSpringBoot実行可能jarを追加しようとしています。

ただし、一度pomに追加され、インポートされます。 Javaインポートが正しく機能しません。jarの内部を見ると、すべてのパッケージの前に次のものが付いています。

BOOT-INF/classes.some.package.classname.class

スプリングブーツ関連のパッケージ、マニフェストなどもあります。

SpringBootアプリのビルドをSpring-boot-maven-pluginを使用して通常のjarをインストールしてデプロイするように切り替えた場合は違います

これは変更され、すべてが正常に機能します。残念ながら、リリースプロセスの一部として実行可能jarに依存しているため、これは解決策ではありません。

両方のバージョンのjarをデプロイしてビルドし、分類子を使用してそれぞれを判別できますか?

ありがとう

9
Michael W

この正確なシナリオは、spring-boot-maven-pluginを使用して実現できることがわかりました。

Spring Bootアプリのpom:

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.4.1.RELEASE</version>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin>

スプリングブートjarを使用するプロジェクトは、通常どおり追加できます。

    <dependency>
        <groupId>com.springboot</groupId>
        <artifactId>app</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <scope>test</scope>
    </dependency>

または、実行可能なjarを参照する場合

    <dependency>
        <groupId>com.springboot</groupId>
        <artifactId>app</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <scope>test</scope>
        <classifier>exec</classifier>
    </dependency>
14
Michael W