Подтвердить что ты не робот

Каков наилучший способ избежать maven-jar?

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

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

Не работает

4b9b3361

Ответ 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>