Распространение файлов ресурсов плагина для размещения проекта - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть плагин maven, который представляет Mojo, с целью, которая выполняется на этапе компиляции. Проект был сгенерирован с использованием mvn archetype: generate, и POM содержит все стандартные вещи, которые идут с выполнением этого, очень небольшого отклонения. Проект включает в себя пару файлов ресурсов, например, filea.txt и fileb.txt, которые упакованы как часть jar.

Когда плагин используется в проекте, я хотел бы, чтобы файлы, включенные в jar, были извлечены и скопированы в каталог target \ test-classes хост-проекта. Я пытаюсь использовать плагин jar для распространения некоторых файлов + раскрыть некоторые функции, которые затем могут использовать эти файлы.

Это правильный подход, и если да, есть ли настройки, которые я могу добавить в POM плагина, чтобы указать, что контент из плагина должен быть извлечен и скопирован? Я хочу централизовать эту логику c в плагине, а не делать это на хосте плагинов.

Я чувствую, что это что-то с maven-dependency-plugin или maven-resources-plugin или build-helper-maven-plugin: attach-artifact, пробовал несколько разных подходов, но думаю, что я что-то упустил очевидно:

например что-то подобное в плагине POM?

  <plugins>
    <plugin>
      <artifactId>maven-clean-plugin</artifactId>
      <version>3.1.0</version>
    </plugin>
    <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <version>3.0.2</version>
      <configuration>
        <outputDirectory>${basedir}/target/test-classes</outputDirectory>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <includes>
              <include>filea.txt</include>
              <include>fileb.txt</include>
            </includes>
          </resource>
        </resources>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.0</version>
    </plugin>
    <plugin>
      <artifactId>maven-plugin-plugin</artifactId>
      <version>3.6.0</version>
    </plugin>
    // etc etc

Google fu подвел меня, продолжайте попадать на страницу ресурсов maven. Может публиковать структуру каталогов / дополнительную информацию, если это необходимо.

Cheers

1 Ответ

0 голосов
/ 06 февраля 2020

Сначала я бы предложил поместить ресурсы, которые должны быть распределены, в src/main/resources, который выглядит так, как вы сделали ... но удалите конфигурацию для плагина maven-resources-plugin и позвольте maven выполнять свою работу. Это автоматически копируется в target/classes/, который в результате упаковывается в получившийся jar позже.

Если вашему плагину нужно получить эти файлы, к ним можно получить доступ как к обычному ресурсу через this.getClass().getResourcesAsStream("/...") и прочитать и записать их в новое местоположение предпочтительнее в target/...

...