12

私はMavenにかなり慣れていません...

私がやろうとしているのは、展開段階で maven-deploy-plugin をスキップし、それを自分のプラグインに置き換えることです (つまり、非リポジトリの場所に展開しています)。

他にも複数の方法でこれを実行できることはわかっていますが、上司は実行できるようにしたいと考えています。

mvn デプロイ

現在の回避策の結果を取得するには、maven-deploy-plugin を無効にし (デプロイ フェーズ全体を無効にしているようです)、コマンド ラインからカスタム アップロード ゴールを手動で指定します。

私は現在、以下の理由でミッションを成功させることができません:

<executions>
    <execution>
        <phase>deploy</phase>
    </execution>
</executions>

私のプラグイン仕様を含む build/plugins/plugin セクションで、展開フェーズがスキップされるため:

        <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>

ありがとう!

4

3 に答える 3

18

maven-deploy-pluginを無効にする(デプロイフェーズ全体を無効にしているようです)

これは正しくありません。無効maven-deploy-pluginにしても、デプロイフェーズ全体が無効になるわけではありません。これはそれが行われるべき方法です(あなたがすでにそれをしているように見えます):

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
            <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </pluginManagement>
</build>
于 2012-10-08T07:17:22.753 に答える
9

標準のデプロイプラグインを無効にするために、この(テストされていない)代替手段を試してください。

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.7</version>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>none</phase>
        </execution>
    </executions>
</plugin>
于 2012-10-05T18:52:36.883 に答える
1

@ yegor256の答えを少し発展させたい... 8年、4ヶ月後!

私はここで、粗雑でいっぱいだったいくつかのレガシー Maven 構成の雑草に巻き込まれていることに気づきました。Maven の考え方から来て、今からアクティブなハッキングまで数年はかかりましたが、Maven のライフサイクルに再び慣れてきました。

TLDR...mvn help:effective-pomはあなたの友達です。IDE のツールを使用して有効な POM を頻繁に表示します (NetBeans を使用すると簡単に表示できます。IntelliJ にキーボード ショートカットを追加しました)。

私が検討していた構成では、以前の開発者は 2 つの実行deploy-fileを作成していました。warjar

<build>
...
  <plugins>
  ...
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>2.8.2</version>
      <executions>
        <execution>
          <id>deploy-war</id>
          <phase>deploy</phase>
          <goals>
            <goal>deploy-file</goal>
          </goals>
          <configuration>
            ... omitted ...
          </configuration>
        </execution>
        <execution>
          <id>deploy-jar</id>
          <phase>deploy</phase>
          <goals>
            <goal>deploy-file</goal>
          </goals>
          <configuration>
            ... omitted ...
          </configuration>
        </execution>
      </executions>
    </plugin>
  ...
  </plugins>
...
</build>

これらの実行がフェーズへのdefault-deployバインドに追加されることを認識してdeployおり、ログでこの動作を観察しました。default-deployが実行され、空の war ファイルがアップロードされます。次に、がdeploy-war実行され、最初の war ファイルがアップロードされ、上書きされます。

いくつかのオプションがあります。

skipそしてcombine.self="override"(私の好み)

提示されて<skip>いるように、<configuration>オプションとして使用することは実行可能です。を に設定するよりも安全でポータブル<phase>ですnone

ただし、それは他の実行によって継承されます (確かに提示されているとおり)。これを防ぐには、追加の構成で継承しないように明示的に指示する必要があります<execution>

...
...
      <executions>
        <execution>
          <id>deploy-war</id>
          <phase>deploy</phase>
          <goals>
            <goal>deploy-file</goal>
          </goals>
          <configuration combine.self="override">
            ... omitted ...
          </configuration>
        </execution>
...
...

オーバーライドdefault-deploy

別のオプションは、プラグインの実行combine.self="override"オーバーライドすることdefault-deploy よりも、おそらくより冗長で難解ではありません。<id>

...
        <execution>
          <id>default-deploy</id>
          <configuration>
            <skip>true</skip>
          </configuration>
        </execution>
...

これは追加では継承されません<executions>

別のオプション

@ yegor256が指摘しているように、追加の構成では、プラグインから<skip>false</skip>継承されたものを「リセット」するように明示的に述べています。<skip>

HTH。

于 2021-02-08T04:01:03.673 に答える