Подтвердить что ты не робот

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

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

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

Спасибо заранее.

4b9b3361

Ответ 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>.