1

いくつかのビルドからのEARファイルがあります。このEARファイルの内容を別のフォルダーに抽出したいと思います。私はこれを行う方法が混乱しています。http://maven.apache.org/plugins/maven-ear-plugin/http://maven.apache.org/plugins/maven-dependency-plugin/usage.htmlを調べて試しました

しかし、Mavenがファイルを見つけることができないか、依存関係の問題があります。

私はMavenを初めて使用するため、これらのプラグインを設定する方法がわかりません。

以下のプラグインを使用すると、次のエラーが発生しました。

http://repo.maven.apache.org/maven2でECM:ECM:ear:1.0が見つからなかったため、ローカルリポジトリにキャッシュされました

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>ECM</groupId>
                                <artifactId>ECM</artifactId>
                                <version>1.0</version>
                                <type>ear</type>
                            </artifactItem>
                        </artifactItems>
                        <outputDirectory>${project.build.directory}/earoutput</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
4

3 に答える 3

4

を使用して実行できますdependency:unpack-dependencies。あなたのコメントによると、あなたの耳は他のビルドによって生成されているため、回答を変更しただけです。ear アーティファクトをデプロイできるエンタープライズ リポジトリがない場合は、「システム」スコープを使用する必要がありますが、通常は推奨されないことに注意してください。

以下の依存関係を pom.xml に追加します

<dependency>
    <groupId>ECM</groupId>
    <artifactId>ECM</artifactId>
    <version>1.0</version>
    <type>ear</type>
    <scope>system</scope>
    <systemPath>/path/to/your/abc.ear</systemPath>
</dependency>

以下のプラグインを postBuild モジュール pom.xml に追加します。

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>package</phase>
            <goals>
                <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
                <includeArtifactIds>ECM</includeArtifactIds>
                <outputDirectory>${project.build.directory}/earoutput</outputDirectory>
            </configuration>
        </execution>
    </executions>
 </plugin>
于 2013-03-06T00:38:22.877 に答える
0

モジュールを解凍するためのMavenEARプラグインのこの例はもう見ましたか?

于 2013-03-05T23:53:07.233 に答える
0

Maven Dependency Pluginとそのunpackゴールはこれを行うことができます。

サンプル構成:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-dependency-plugin</artifactId>
 <version>2.6</version>
 <executions>
   <execution>
     <id>unpack</id>
     <phase>package</phase>
     <goals>
       <goal>unpack</goal>
     </goals>
     <configuration>
       <artifactItems>
         <artifactItem>
           <groupId>myear</groupId>
           <artifactId>myear</artifactId>
           <version>1.0</version>
           <type>ear</type>
         </artifactItem>
       </artifactItems>
       <outputDirectory>${project.build.directory}/earoutput</outputDirectory>
     </configuration>
   </execution>
 </executions>
</plugin>

これは、'myear.ear' アーティファクトを受け取り、'target/earoutput' ディレクトリに抽出します。これは、JAR、WAR、およびその他の zip 形式のファイルでも機能します。これが実行されるフェーズは「パッケージ」です。ビルドの他の部分でこれらのリソースを使用する必要がある場合、これでは遅すぎる可能性があります。必要に応じて、フェーズを「generate-resources」などの前のものに変更します。

依存関係プラグインを既に使用しようとしたとおっしゃいました。EAR ファイルは別の Maven プロジェクトからのもので、ローカルの Maven リポジトリにインストールされていますか? それでも機能しない場合は、使用しようとしたプラグイン構成を投稿してください。


(編集:依存関係とローカルリポジトリに関する情報を更新)

これを機能させるには、EAR ファイルをローカルの Maven リポジトリに配置する必要があります (これはディスク上の単なるディレクトリです)。ただし、他の人もあなたのプロジェクトをビルドする必要がある場合は、いくつかのオプションがあります。

  • EAR をローカル リポジトリにインポートし、全員が取得できるようにリモート リポジトリにもデプロイします (推奨されますが、企業の Maven リポジトリをセットアップする必要があります)。
  • 全員に EAR を渡し、いくつかの Maven コマンドを使用してローカル リポジトリに配置してもらいます (数人の開発者にとっては問題ないかもしれません。リポジトリ サーバー全体をセットアップするよりもオーバーヘッドが少なくなります)。
  • 依存する EAR をプロジェクトのソース管理にチェックインし、プロジェクトのゴールでアンパックします (推奨される方法ではありません)。

ローカル リポジトリへのインポートは簡単です。これらの指示に非常に似ています。

次のコマンドを使用します。

mvn install:install-file -Dfile=<path-to-EAR-file-on-local-filesystem> -DgroupId=myear
-DartifactId=myear -Dversion=1.0 -Dpackaging=ear

(必要に応じて、パス、groupId、artifactId、およびバージョンを変更します)

グループ ID とアーティファクト ID は、単にアーティファクトを一意に識別するためのものです。

これをローカル リポジトリにインストールすると、依存関係プラグインが機能し、アーティファクトが検出されます。

于 2013-03-06T00:01:22.323 に答える