web-dev-qa-db-ja.com

maven-jarを回避する最良の方法は何ですか?

ファイルをjarするために別のプラグイン(ant4Eclipse)を使用しています。 maven-jarプラグインの実行を回避する最良の方法は何ですか?

  • <plugin>maven-jar-plugin</plugin>を削除しようとしました
  • <exclude> ** / * < / exclude>を試しました
  • <skip>true</skip>を試しました

何もしなかった

45
unj2

Maven 3.0.x(私は3.0.2を試しました)では、_maven-jar-plugin_の実行を存在しないフェーズにバインドすることで_default-jar_を無効にできます @ bmarguliesが推奨 。残念ながら、これは2.2.1では機能しませんが、_<finalName>_の実行に代替_<classifier>_および_default-jar_を設定することで、独自のjarに干渉しないようにすることができます。それでもjarは作成されますが、プロジェクトの2番目のアーティファクトとして設定され、作成したものを上書きしません。以下は、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_ディレクトリが存在する必要があり、プライマリアーティファクトが存在しない場合にダミーjarをインストールします。

49
peterj

これでうまくいくはずです。<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>
33
redhot

私の場合、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>
6
bheussler

これを宣言するとどうなりますか?

<packaging>pom</packaging>

それがあなたの探していることをしたとしても、注意してください。 jarが見つからないことに依存する他のmavenプロジェクトなど、マイナスの副作用があるかどうかはわかりません。

5
Drew Wills

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には、「スキップ」構成パラメーターを使用しました。 documentation について:「アーティファクトのインストールをバイパスするには、これをtrueに設定します。ローカルリポジトリにインストールする必要のないアーティファクトには、これを使用してください。」

3
Erik Nellessen

Jarプラグインを、存在しないフェーズに明示的にバインドします。

3
bmargulies

他の人が言っているように、すべてをオフにする<packaging>pom</packaging>を使用する以外は、オフにすることはできません。

2回生成されますが、実際の解決策は、jarプロセスをpackageフェーズにバインドすることです。これは、デフォルトの後に実行されることが保証されているためです。同じJARファイルを上書きすると、元のJARファイルが使用されていた場所で使用されていることがわかります。

2
Brett Porter

ファイルをjarするために別のプラグインを使用しています。 maven-jarプラグインの実行を回避する最良の方法は何ですか?

まず、jar:jarゴールは デフォルトでバインドpackageタイプのパッケージを使用するプロジェクトのjarフェーズです。次に、フェーズにバインドされたプラグインをアンバインドする方法はありません。したがって、別のプラグイン(?)を使用している場合は、2つのJARの生成を受け入れるか、パッケージを変更します(ただし、これがうまく機能するとは思えません)。

0
Pascal Thivent