2010-12-05 10 views
3

私はリモートのUNCサーバーの株式(\\servername\share\directory\to\put\to)にいくつかの成果物をアップロードしようとするためにMaven Wagon Pluginに探している、と私はそれがPOMにそうように動作するように構成され得ている:Maven Wagon Plugin:Can wagon:アップロードを複数の場所にアップロードできますか?

<build> 
    <extensions> 
    <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-file</artifactId> 
     <version>1.0-beta-7</version> 
    </extension> 
    </extensions> 
<plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>wagon-maven-plugin</artifactId> 
    <version>1.0-beta-3</version> 
    <executions> 
     <execution> 
     <id>upload-jar-to-folder</id> 
     <phase>deploy</phase> 
     <goals> 
      <goal>upload</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <fromDir>${project.build.directory}</fromDir> 
     <includes>*</includes> 
     <url>file://localhost///${servername}/${sharename}</url> 
     <toDir>directory/to/put/artifact</toDir> 
    </configuration> 
    </plugin> 
    ... 
</build> 

これがための素晴らしいの作品1台のサーバ私は-Dservername=x -Dsharename=yを渡しますが、どのようにして展開することができますか?複数のサーバを配備するQAまたはProdの配備を実行できますか?

私は、mvn wagon:upload -Penvironment#を複数回(各サーバーにつき1回)実行すると考えましたが、これは私には間違いのようです。私がこのプロセスを処理するスクリプトに砲撃しているならば、私はデプロイメント全体をスクリプト化することもできます。しかし、これはWagon(およびMaven)の有用性を取り除きます...

<executions>を1つの目標で実行する方法はありますか?たとえば、mvn deploy -Pqaを実行したときに複数のプロファイルを設定してwagon:uploadタスクを実行しているとしますか?

+0

個別にアップロードする代わりに、サーバーがネットワークドライブを共有することはできませんか?彼らはおそらく、同じネットワーク内にあり、お互いを見ているべきです。ちょうど提案。 –

+0

私はそれがうまくいくかどうかはわかりません。私が展開するフォルダは、各インスタンスに固有のWeblogicインストールの 'autodeploy'フォルダです。私はそれをすることに反対していないが、私はそれが以前にやったことを見たかどうかわからないし、それを行う方法を知らない。 –

答えて

3

複数のプロファイルを使用する場合は、mvn deploy -Denv=qaを使用し、このプロパティでいくつかのプロファイルをトリガーし、プロファイル内のサーバーの構成を定義します。

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

とのプロファイルの活性化の外観のこの種のための検索

-Denvironment =テスト

ここに1つのビルドでのmaven-antrun - プラグインの2つの実行を行う例POMです:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.stackoverflow</groupId> 
    <artifactId>q5328617</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <profiles> 
    <profile> 
     <activation> 
      <property> 
       <name>env</name> 
       <value>qa</value> 
      </property> 
     </activation> 
     <id>qa1</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
         <id>qa1</id> 
         <phase>test</phase> 
         <configuration> 
          <tasks> 
           <echo level="info">Executing qa1</echo> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         </execution> 
        </executions> 
        <dependencies> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <activation> 
      <property> 
       <name>env</name> 
       <value>qa</value> 
      </property> 
     </activation> 
     <id>qa2</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
         <id>qa2</id> 
         <phase>test</phase> 
         <configuration> 
          <tasks> 
           <echo level="info">Executing qa2</echo> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         </execution> 
        </executions> 
        <dependencies> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    </profiles> 
</project> 
+0

プロファイルのアクティベーションで同じプラグインを複数回実行できますか?上記では、あるサーバーへの展開と別のサーバーへの展開の間で変更されるのは、URLだけです。私は上記のプラグインを2つ、3つ、またはそれ以上実行して、すべてのサーバーにインストールすることができます。 –

+0

はい、(ちょうど試しました;-)!私は私の答えを編集し、例を追加しました。 – Jan

+0

優秀!今私のプロジェクトでこれを試してみます。これは少し冗長ですが、少なくとも可能です。 –

関連する問題