Как включить файл конфигурации в папку "META-INF/services" JAR с помощью Maven

Я работаю над проектом Java в Eclipse, который построен с использованием Maven. Я использую некоторый переработанный код из более старого проекта, и один из этих классов ищет файл в папке "META-INF/services" JAR с определенным именем, а затем анализирует текст этого файла. В этом конкретном примере он ищет файл с именем интерфейса Java, а затем извлекает имя класса реализации изнутри файла.

Поэтому в основном я пытаюсь включить файл в папку "META-INF/services" JAR с именем файла (X) и одной строкой текста (Y). Я предполагаю, что это должно быть сделано с помощью Maven, может быть, путем указания атрибута в файле POM, но мои исследования ничего не обнаружили. Я знаю, что вы не должны жестко кодировать или вручную печатать какие-либо файлы META, поэтому я не уверен, что здесь делать.

Заранее спасибо.

3 ответа

Решение

Создайте новую исходную папку с расположением src/main/resourcesзатем создайте свой META-INF/services папку там и поместите в свой файл FQCN. Это должно автоматически скопировать их в файл jar. Итак, вы будете иметь:

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

Стоит отметить, что это относится и к проектам Gradle с исходными наборами по умолчанию.

По умолчанию Maven ищет ресурсы по адресу:

src/main/resources

Так что поставь на

src/main/resources/META-INF/services

Альтернативно, если ваш проект не использует стандартную структуру каталогов (или вы просто хотите иметь альтернативные каталоги ресурсов), вы можете указать каталоги ресурсов вручную в файле POM.

Например, если ваш META-INF/services находится в папке с именем resources который находится в корневом каталоге вашего проекта, можно указать его следующим образом:

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

Вы можете использовать это, чтобы указать несколько каталогов, добавив несколько <resource> элементы.

Другие вопросы по тегам