Как включить файл конфигурации в папку "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>
элементы.