Как включить файл конфигурации в папку "META-INF/services" JAR с использованием Maven
Я работаю над проектом Java в Eclipse, который построен с использованием Maven. Я использую некоторый переработанный код из более старого проекта, и один из этих классов ищет файл в папке "META-INF/services" JAR с определенным именем, а затем анализирует текст этого файла. В этом конкретном примере он ищет файл с именем интерфейса Java, а затем захватывает имя класса реализации изнутри файла.
Таким образом, в основном то, что я пытаюсь сделать, это включить файл в папку "META-INF/services" JAR с именем файла (X) и одной строкой текста (Y). Я предполагаю, что это должно быть сделано с помощью Maven, возможно, указав атрибут в файле POM, но мои исследования ничего не показали. Я знаю, что вы не должны жестко программировать или вручную печатать какие-либо файлы META, поэтому я не уверен, что делать здесь.
Спасибо заранее.
Ответы
Ответ 1
Создайте новую исходную папку с расположением src/main/resources
, затем создайте свою папку META-INF/services
и запустите файл FQCN. Это должно автоматически копировать их в файл jar. Итак, у вас будет:
Project
| src
| | main
| | java
| | [your source code]
| | resources
| | META-INF
| | services
| | [your service files]
Стоит отметить, что это относится к проектам Gradle со стандартными наборами по умолчанию.
Ответ 2
По умолчанию Maven ищет ресурсы по адресу:
src/main/resources
Итак, поставьте его на
src/main/resources/META-INF/services
Ответ 3
В качестве альтернативы, если ваш проект не использует стандартную структуру каталогов (или просто хочет иметь альтернативные каталоги ресурсов), вы можете вручную указать каталоги ресурсов файл POM.
Например, если ваш META-INF/services
находится в папке с именем resources
, которая находится в корне вашей директории проекта, можно указать ее следующим образом:
<project>
...
<build>
...
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
...
</build>
...
</project>
Вы можете использовать это, чтобы указать несколько каталогов, добавив несколько элементов <resource>
.