Каков наилучший способ избежать maven-jar?
Я использую другой плагин (ant4eclipse) для jar моих файлов. Каков наилучший способ избежать выполнения плагина maven-jar?
- Я попытался удалить
<plugin>maven-jar-plugin</plugin>
- Я попытался
<exclude> ** / * < / exclude>
- Я попытался
<skip>true</skip>
Не работает
Ответы
Ответ 1
В Maven 3.0.x (я пробовал 3.0.2) вы можете отключить maven-jar-plugin
, привязав выполнение default-jar
к несуществующей фазе, как @bmargulies предложило. К сожалению, это не работает в 2.2.1, но вы можете предотвратить его вмешательство в ваш собственный jar, установив альтернативные <finalName>
и <classifier>
для выполнения default-jar
; он все равно создаст jar, но он будет установлен как вторичный артефакт для проекта и не будет перезаписывать созданный вами. Вот пример, который должен работать как в Maven 2, так и в Maven 3:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
<configuration>
<finalName>unwanted</finalName>
<classifier>unwanted</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
После того, как вы отключили maven-jar-plugin
, maven-install-plugin
также может доставить вам неприятности. В Maven 3 его можно отключить так же, как maven-jar-plugin
: привязать default-install
к несуществующей фазе. Однако в Maven 2 maven-install-plugin
требует, чтобы каталог target/classes
существовал, и он установит фиктивную банку, когда первичного артефакта нет.
Ответ 2
Это должно сделать трюк - обратите внимание на использование <id>default-jar</id>
и <phase/>
.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-jar</id>
<phase/>
</execution>
</executions>
</plugin>
</plugins>
</build>
Ответ 3
Что произойдет, если вы объявите это?
<packaging>pom</packaging>
Даже если он делает то, что вы ищете, будьте осторожны. Я не уверен, могут ли быть отрицательные побочные эффекты, такие как другие проекты maven, которые зависят от вашей банки, неспособной найти ее.
Ответ 4
В моем случае я только хотел отключить плагин jar, потому что банка была пуста. Вы можете использовать опцию skipIfEmpty
в конфигурации плагина
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<skipIfEmpty>true</skipIfEmpty>
</configuration>
</plugin>
Ответ 5
Явно привязать плагин jar к фазе, которая не существует.
Ответ 6
Как говорили другие, невозможно отключить его, кроме использования <packaging>pom</packaging>
, который отключает все и, вероятно, не то, что вы хотите.
Несмотря на то, что он будет генерироваться дважды, рабочим решением является привязка вашего процесса jar к фазе package
, так как это гарантировано для запуска по умолчанию. Переписывая один и тот же JAR файл, вы обнаружите, что ваш используется везде, где оригинал был бы.
Ответ 7
Используя maven 3.3.9, у меня сработало следующее:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
<configuration>
<finalName>unwanted</finalName>
<classifier>unwanted</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Так что в случае с maven-jar-plugin я связал его с несуществующей фазой. Для maven-install-plugin я использовал параметр конфигурации "skip". Документация об этом гласит: "Установите это значение true, чтобы обойти установку артефактов. Используйте это для артефактов, которые не нужно устанавливать в локальном хранилище".
Ответ 8
Я использую другой плагин для создания файлов. Каков наилучший способ избежать выполнения плагина maven-jar?
Во-первых, цель jar:jar
привязана по умолчанию к фазе package
для проекта с упаковкой типа jar
. Во-вторых, невозможно отвязать плагин, привязанный к фазе. Итак, если вы используете другой плагин (?), Либо соглашайтесь на производство 2 JAR или меняете упаковку (но я не думаю, что это будет работать хорошо).
Ответ 9
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>