Как лучше всего избегать мавен-банок? - PullRequest
42 голосов
/ 03 февраля 2010

Я использую другой плагин (ant4eclipse) для хранения файлов.Каков наилучший способ избежать запуска плагина maven-jar?

  • Я пытался удалить <plugin>maven-jar-plugin</plugin>
  • Я пытался <exclude> ** / * < / exclude>
  • Я пытался <skip>true</skip>

Ни один не работал

Ответы [ 9 ]

46 голосов
/ 31 января 2011

В 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: привязать default-install к несуществующей фазе. Однако в Maven 2 maven-install-plugin требуется, чтобы существовал каталог target/classes, и он установит фиктивную банку, когда отсутствует основной артефакт.

32 голосов
/ 12 сентября 2013

Это должно сработать - обратите внимание на использование <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>
4 голосов
/ 12 декабря 2017

В моем случае я только хотел отключить плагин 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>
3 голосов
/ 03 февраля 2010

Явно свяжите плагин jar с фазой, которая не существует.

3 голосов
/ 03 февраля 2010

Что произойдет, если вы заявите об этом?

<packaging>pom</packaging>

Даже если он делает то, что вы ищете, будьте осторожны. Я не уверен, могут ли быть негативные побочные эффекты, например, другие maven-проекты, которые зависят от того, не может ли ваша банка найти ее.

1 голос
/ 04 февраля 2010

Как уже говорили другие, его невозможно отключить, кроме как с помощью <packaging>pom</packaging>, который выключает все и, вероятно, не то, что вы хотите.

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

0 голосов
/ 02 июля 2019

Используя 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, чтобы обойти установку артефактов. Используйте это для артефактов, которые не нужно устанавливать в локальном хранилище».

0 голосов
/ 15 ноября 2011
       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>        
0 голосов
/ 03 февраля 2010

Я использую другой плагин для хранения файлов. Каков наилучший способ избежать запуска плагина maven-jar?

Во-первых, целью jar:jar является , связанная по умолчанию на этапе package для проекта с упаковкой типа jar. Во-вторых, нет способа отсоединить плагин, привязанный к фазе. Так что, если вы используете другой плагин (?), Либо согласитесь произвести 2 JAR-файла, либо измените упаковку (но я не думаю, что это будет работать хорошо).

...