web-dev-qa-db-ja.com

Mavenを使用してJARの「META-INF / services」フォルダーに構成ファイルを含める方法

EclipseでJavaプロジェクトに取り組んでいます。これはMavenを使用して構築されています。古いプロジェクトのリサイクルコードを使用しており、これらのクラスの1つは、JARの「META-INF/services」フォルダー内で特定の名前のファイルを探し、このファイルのテキストを解析します。この特定の例では、Javaインターフェースの名前を持つファイルを検索し、ファイル内から実装のクラス名を取得します。

だから基本的に私がやろうとしているのはファイル名(X)と1行のテキスト(Y)でJARの "META-INF/services"フォルダーにファイルを含めるです。多分POMファイルで属性を指定することによって、Mavenを使用してこれを行う必要があると思いますが、私の研究では何も判明していません。 METAファイルをハードコードしたり、手動で入力したりすることは想定していないので、ここで何をすべきかわかりません。

前もって感謝します。

65
Matt Vukas

新しいソースフォルダーを作成する 場所をsrc/main/resourcesにして、そこにMETA-INF/servicesフォルダーを作成し、FQCNファイルをドロップします。これにより、それらがjarファイルに自動的にコピーされます。だからあなたが持っているでしょう:

Project
| src
| | main
|   | Java
|     | [your source code]
|   | resources
|     | META-INF
|       | services
|         | [your service files]

これは、デフォルトのソースセットを持つGradleプロジェクトにも適用されることに注意してください。

102
Brian

デフォルトでは、Mavenは次のリソースを探します。

src/main/resources

だからそれを置く

src/main/resources/META-INF/services
17
Puce

あるいは、プロジェクトが標準のディレクトリ構造を使用していない場合(または単に別のリソースディレクトリを用意したい場合)、POMファイルを手動で リソースディレクトリ と指定できます。

たとえば、META-INF/servicesがプロジェクトディレクトリのルートにあるresourcesというフォルダーにある場合、次のように指定できます。

<project>
...
  <build>
    ...
    <resources>
      <resource>
        <directory>resources</directory>
      </resource>
    </resources>
    ...
  </build>
  ...
</project>

これを使用して、複数の<resource>要素を追加することにより、複数のディレクトリを指定できます。