maven-jar-plugin не включает файл .gitignore

#maven #gitignore #maven-jar-plugin

#maven #gitignore #maven-jar-plugin

Вопрос:

Я пытаюсь упаковать приложение в файл jar с помощью maven. Каким-то образом все файлы, кроме .gitignore files, добавляются в jar.

Почему этот файл пропущен и как я могу это отключить?

Даже если я попытаюсь включить его, как показано ниже, включение игнорируется, и файл jar остается пустым.

 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <includes>
      <include>**/.gitignore</include>
    </includes>
  </configuration>
</plugin>
  
  • версия maven-jar-плагина: 3.1.0
  • версия maven: 3.5.2

Комментарии:

1. Почему вы хотите включить .gitignore в jar? Он бесполезен для java, а внутри jar он бесполезен для git.

2. Jar используется в качестве контейнера для упаковки готового к разработке образца приложения в уже существующий рабочий процесс.

3. С моей точки зрения, вам лучше использовать zip-архив для этого.

4. Но я предполагаю, что ваш файл .gitignore также не найден в целевом каталоге — верно? Это означает, что вам нужно скопировать его туда с помощью плагина ресурсов, иначе плагин jar не сможет его найти.

5. Я сказал плагину ресурса скопировать файл .gitignore через addDefaultExcludes в target. Это работает. Но maven-jar-plugin по-прежнему игнорирует его.

Ответ №1:

Я попробовал это с помощью src/main/resources/.gitignore , и он работал по умолчанию maven-jar-plugin:2.4 , т. Е. .gitignore был упакован в JAR.

Затем я использовал maven-jar-plugin:3.1.0 упомянутый вами, и он не работал, как вы описываете.

Оказалось, что он не работает с версии v2.5 и далее.

Комментарии:

1. Это то же самое, что я обнаружил. Так что, возможно, нет возможности сделать это с помощью maven-jar-plugin >= 3

Ответ №2:

У меня такая же проблема с .metadata папкой в target/classes папке. .metadata Папка не включена в архив jar. Для меня он не работает с maven-jar-plugin:2.4 и верхним. С версией 2.3 он работает.

Я отправил эту проблему:https://issues.apache.org/jira/browse/MJAR-265

Ответ №3:

Во-первых, использование примеров проектов в jar-файле поражает. Я бы никогда не ожидал, что в .jar файле будут примеры проектов. Цель файлов jar — нечто иное. Я бы предложил использовать что-то более подходящее, например, .zip или .tar.gz и т.д. (Это может быть достигнуто с помощью maven-assembly-plugin) Это предотвратит случайное использование не по назначению.

Помимо всего проблема основана на определении ресурсов, которые обычно копируются из src/main/resources в target/classes каталог. Это делается maven-resources-plugin .

Плагин maven-resources-plugin имеет некоторую конфигурацию, которая исключает некоторые файлы, которые обычно не копируются, которые содержат .gitignore . Таким образом, это означает, что простое добавление .gitignore файла в src/main/resources не даст ожидаемого результата, и использование <includes>..</includes> конфигурации здесь также не поможет.

Это означает, что вам необходимо изменить конфигурацию maven-resources-plugin по умолчанию через pluginManagement раздел, подобный следующему:

   <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
          <configuration>
            <addDefaultExcludes>false</addDefaultExcludes>
          </configuration>
        </plugin>
  

Затем .gitignore файл будет скопирован и должен быть упакован в результирующий файл jar (что я бы не рекомендовал делать.)

Комментарии:

1. Это верно. Мне уже удалось скопировать файлы с плагином ресурсов в target/classes . Но maven-jar-plugin > 2.4 также пропускает .gitignore файлы.