#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
файлы.