Как лучше всего избегать мавен-банок?
Я использую другой плагин (ant4eclipse) для хранения файлов. Каков наилучший способ избежать запуска плагина maven-jar?
- Я пытался удалить
<plugin>maven-jar-plugin</plugin>
- Я пытался
<exclude> ** / * < / exclude>
- Я пытался
<skip>true</skip>
Никто не работал
8 ответов
В 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>never</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
: bind default-install
к несуществующей фазе. Однако в Maven 2 maven-install-plugin
требует, чтобы target/classes
каталог существует, и он установит фиктивную флягу, когда нет основного артефакта.
Это должно сработать - обратите внимание на использование <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>
В моем случае я только хотел отключить плагин jar, потому что 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>
Что произойдет, если вы заявите об этом?
<packaging>pom</packaging>
Даже если он делает то, что вы ищете, будьте осторожны. Я не уверен, могут ли быть негативные побочные эффекты - например, другие проекты maven, которые зависят от того, не может ли ваша банка найти ее.
Используя 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, чтобы обойти установку артефактов. Используйте это для артефактов, которые не нужно устанавливать в локальный репозиторий".
Как уже говорили другие, отключить его невозможно, кроме как с помощью <packaging>pom</packaging>
, который выключает все и, вероятно, не то, что вы хотите.
Даже если он будет сгенерирован дважды, рабочим решением будет привязать ваш процесс jar к package
фаза, поскольку это гарантированно будет работать после значения по умолчанию. Перезаписав тот же JAR-файл, вы обнаружите, что ваш используется там, где был бы оригинал.
Я использую другой плагин, чтобы испортить мои файлы. Каков наилучший способ избежать запуска плагина maven-jar?
Во-первых, jar:jar
по умолчанию цель связана с package
фаза для проекта с упаковкой типа jar
, Во-вторых, нет способа отсоединить плагин, привязанный к фазе. Итак, если вы используете другой плагин (?), Либо согласитесь произвести 2 JAR-файла, либо измените упаковку (но я не думаю, что это будет работать хорошо).
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>