web-dev-qa-db-ja.com

Spring Boot Mavenプラグインに含まれるリソース

依存関係からのリソースを含めるように何らかの方法でSpring Boot Mavenプラグインを構成することは可能ですか?.

例えば。私の春のブートプロジェクトで私が持っている場合:

<dependency>
        <groupId>co.company</groupId>
        <artifactId>example</artifactId>
    </dependency>

そのJARファイルには、example.propertiesなどのプロパティファイルがあります。

jar -tf example.jar | grep example.properties | wc -l

結果は1になります。

ただし、Spring Boot JARをビルドすると、このプロパティファイルはsrc/main/resourcesに追加されません。それを含むJARはBOOT-INF/lib/example.jarに含まれています

しかし、私の場合。自動構成などでピックアップできるように、src/main/resourcesのコンテンツをSpring Boot JARのboot BOOT-INF/classes/ディレクトリに抽出したいと思います。

現実の世界

現実の世界では、私はこれを次のようにしようとしています:

  • thymeleafテンプレート(たとえば、私の依存関係JARはHTMLテンプレートファイルを提供しますが、展開されたブートjarではこれらのテンプレートは解決されません)
  • liquibase changelogファイル(私の依存関係にはchangelogファイルが含まれていますが、これらは実行されていません-ブートJARのsrc/main/resourcesにないため、liquibase autoconfigがchangelogファイルを見つけられないと思います)。
8
David

この問題の解決策は あなたが尋ねた別の質問の解決策 に非常に似ていると思います。

Spring Bootモジュールでmaven-dependency-pluginunpackゴールを使用できます。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>module-a</artifactId>
                        <version>${project.version}</version>
                        <includes>**/*.yaml</includes>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>${project.build.directory}/classes/BOOT-INF/</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

これにより、module-aからBOOT-INFboot-moduleディレクトリにリソースがコピーされます。より完全な例を GitHub に投稿しました。

11
jjlharrison