4

概要:Mavenを使用して、生成されたファイルをWebサーバー(IISやApacheなど)ディレクトリにコピーするにはどうすればよいですか?

詳細:Mavenでビルドする実用的なアプリケーションがあります。必要なすべてのファイル(.jarおよび.jnlp)をディレクトリに生成するwebstart-maven-pluginを使用してビルドすることができましたtarget/jnlp。また、でそれらすべてを含むzipファイルを作成しますtarget/foo-1.0.zip

現時点では、webstartプラグインにはdeploy目標がありません。その要求はFAQ(質問3)にあります。将来的に実装される可能性がありますが、当面はwagon-maven-pluginを使用することをお勧めします。

私はワゴンを使ったことがありません。まず、Webサーバーが提供するローカルディレクトリにファイルをコピーしたいと思います。後で、おそらくftpを使用して、それらをリモートでコピーしたいと思います。ローカルコピーを機能させるために追加する必要があるものの例を誰かに教えてもらえますかpom.xml(できればftpの例もありますか?)。ドキュメントに見つかりません。読んだところ、 Wagon Mavenファイルプロバイダーも必要かもしれないと思いますが、これにはドキュメントがほとんどないように思われるので、よくわかりません。

4

2 に答える 2

6

Wagon プロバイダーは、追加のネットワーク プロトコル サポート (FTP など) を提供するためだけに存在します。

ファイルを Web サーバー (ローカルまたはリモート) にコピーする場合は、Maven アップロード プラグインを使用できます。

...
<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
</plugin>
...

親 pom で:

            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-upload-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <resourceSrc>
                        ${project.build.directory}/${project.build.finalName}.${project.packaging}
                    </resourceSrc>
                    <resourceDest>${jboss.deployDir}</resourceDest>
                    <serverId>${jboss.host}</serverId>
                    <url>${jboss.deployUrl}</url>
                </configuration>
            </plugin>

そして、スマートな方法でパラメーターを構成するために、(親 pom で) maven プロファイルを使用します。

<profiles>
    <!-- local deployment -->
    <profile>
        <id>developpement</id>
        <properties>
            <jboss.host>localhost</jboss.host>
            <jboss.deployDir>appli/jboss-4.0.4.GA/server/default/deploy/</jboss.deployDir>
            <jboss.deployUrl>file://C:/</jboss.deployUrl>
        </properties>
    </profile>
    <!-- distant deployment -->
    <profile>
        <id>validation</id>
        <properties>
            <jboss.host>ENV_val</jboss.host>
            <jboss.deployDir>/home/envval/jboss/server/default/deploy/</jboss.deployDir>
            <jboss.deployUrl>scp://PROJECT_LAN_HOST</jboss.deployUrl>
        </properties>
    </profile>
</profiles>

「ant ランチャー」を作成し、Eclipse ant ビューの下をクリックして使用します。

<target name="copy war to JBoss local" description="Copy war to local JBoss">
    <maven goal="upload:upload" options="-Pdeveloppement" />
</target>

ただし、コマンドラインで簡単に実行できます。

mvn upload:upload -Pdeveloppement

EDIT:ちなみに、遠隔展開では、scpが機能するためにログインパスワードが必要になる場合があります。これらを Maven の settings.xml ファイルに追加する必要があります。

<settings>
  ...
  <servers>
    <server>
      <id>ENV_val</id>
      <username>login</username>
      <password>password</password>
    </server>
  </servers>
  ...
</settings>

編集: Atlassian リポジトリを追加する必要があります。

    <pluginRepositories>
    <pluginRepository>
        <id>Atlassian</id>
        <url>https://maven.atlassian.com/repository/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>   

編集: リモート プロトコルによっては、ワゴン拡張機能を追加する必要があります。Maven でsftp を使用してディレクトリをアップロードするを参照してください。

于 2011-06-09T11:34:40.973 に答える
3

最終的に、私は Maven アップロード プラグインを使用しませんでした。これは少し制限されており、主要な Maven ディストリビューションの一部ではないように思われました。提案されているように、maven wagon プラグインを使用しました。これは、私が作成できる最も簡単なポンです。似たようなものを簡単に見つけることができなかったので、他の人が役立つことを願っています.

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <configuration>
      <fromDir>${project.build.directory}/jnlp</fromDir>
      <includes>*</includes>
      <url>file://c:/inetpub/wwwroot</url>
      <toDir>jnlp</toDir>
    </configuration>
  </plugin>

リモート配布の場合は、URL タイプを変更するだけで、必要に応じて wagon 拡張機能を追加できます。

于 2011-06-09T13:04:53.327 に答える