私たちはかなり複雑なプロジェクトをAntで構築して使用していますが、今はMavenに移行しています。AntからMavenへの移行:EARプロジェクトを設定するにはどうすればよいですか?
- コアジャーと、コアジャーに依存するさまざまなフィルタージャーがあります。
- これらのjarは、他の依存するjarファイルといくつかのXMLファイルとともに、
SAR
にアセンブルされます。私はこれを以下のfoo-sar
と呼んでいます。 - JARが組み込まれていますが、このJARにはJavaコードは含まれておらず、アプリケーションxmlファイルはわずかです。私はこれを以下に
foo-jar
と呼んだ。 foo-jar
およびfoo-sar
は、META-INF
ディレクトリにあるapplication.xml
ファイルのEARにパッケージされています。foo-jar
foo-sar
foo-ear
両方
foo-jar
とfoo-sar
ビルドうまく:
は、私は三つのサブプロジェクトとMavenプロジェクトを持っています。しかし、foo-ear
がビルドされた場合、application.xml
ファイルを持つ耳が構築されますが、foo-jar
とfoo-sar
は含まれません。
parent Dir --+
|
+-- foo-ear
|
+-- foo-jar
|
+-- foo-sar
正しい順序(foo-sar
、foo-jar
、そしてfoo-ear
)内のすべての3つのプロジェクトを呼び出すpom.xml
親ディレクトリ:私のディレクトリ構造は次のようになります。 foo-jar
とfoo-sar
の両方が正しくビルドされています(つまり、Antビルドの結果と一致しています)。 foo-ear
プロジェクトはエラーなしでビルドされますが、foo-sar
とfoo-jar
ファイルは耳の根元に含まれません。
私はここでかなり単純なものがありません。たぶん追加のパラメータ、または別の設定です。
はここで耳のpom.xml
です:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.vegicorp.foo</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.vegicorp.foo</groupId>
<artifactId>foo-app</artifactId>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<artifactTypeMappings>
<!-- The sar is a "jboss-sar" and not just a "sar" -->
<artifactTypeMapping type="jboss-sar" mapping="sar"/>
</artifactTypeMappings>
<modules>
<jarModule>
<artifactId>foo-jar</artifactId>
<unpack>true</unpack>
</jarModule>
<sarModule>
<artifactId>foo-sar</artifactId>
<unpack>true</unpack>
</sarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>
新たな問題
私は私が持っていた問題の一つは、<groupId>
がmaven-ear-plugin
ためorg.apache.plugins
にしていないorg.apache.maven.plugins
に設定したということです実現しました。 Mavenがなぜこのエラーを検出しなかったのかわからないし、前にエラーをビルドしてしまいます。
私は正しいグループを設定すると、私は<generateApplicationXml>
が偽だったことを指定したにも関わらずapplication.xml
が構築されていたことに気付い始めました。私はこれがgenerate-application-xml
のゴールで起こっていることを認識しました。明らかにデフォルトの<configuration>
はear
のゴールです。したがって、generate-application-xml
ゴールの場合は<execution>
、ゴールの場合はear
を個別に指定する必要がありました。
楽しい、楽しい、楽しい。
を除いて私はを生成するために耳を得ましたが、モジュール情報を少しずつ違うように設定しても、耳の依存関係はダウンロードされています。ここでは耳のための私のpom.xml
です:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.vegicorp.foo</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.vegicorp.foo</groupId>
<artifactId>foo-app</artifactId>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<executions>
<execution>
<id>skip-application-xml-generation</id>
<phase>package</phase>
<goals>
<goal>generate-application-xml</goal>
</goals>
<configuration>
<generateApplicationXml>false</generateApplicationXml>
</configuration>
</execution>
<execution>
<id>create-ear</id>
<phase>package</phase>
<goals>
<goal>ear</goal>
</goals>
<configuration>
<artifactTypeMappings>
<artifactTypeMapping type="jboss-sar" mapping="sar"/>
</artifactTypeMappings>
<modules>
<jarModule>
<groupId>${project.groupId}</groupId>
<artifactId>foo-jar</artifactId>
<unpack>true</unpack>
<uri>FooJar.jar</uri>
</jarModule>
<sarModule>
<groupId>${project.groupId}</groupId>
<artifactId>foo-sar</artifactId>
<unpack>true</unpack>
<uri>Foo.sar</uri>
</sarModule>
</modules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>foo-sar</artifactId>
<version>${project.version}</version>
<type>sar</type>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>foo-jar</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
そしてここでは、生成された耳です:
私は私の耳に含まれているからfoo-1.0.0.jar
とfoo-sar-1.0.0.sar
を防ぐために、私の耳を設定するにはどうすればよい $ ls -l foo-app/target/foo-app-1.0.0
drwxr-xr-x 3 david staff 102 Jan 17 11:21 Foo.jar
drwxr-xr-x 137 david staff 4658 Jan 17 11:21 Foo.sar
drwxr-xr-x 4 david staff 136 Jan 17 11:21 META-INF
-rw-r--r-- 1 david staff 3905 Jan 17 11:21 foo-1.0.0.jar
-rw-r--r-- 1 david staff 50104182 Jan 17 11:21 foo-sar-1.0.0.sar
?私の耳の<module>
セクションは、私のモジュールに私の依存関係をマッピングしてはいけませんか?<configuration>
。 – arghtype
モジュールを ''に入れてモジュールをダウンロードしましたが、 'pom.xml'の' 'セクションは無視されています。私は、場所、名前、アンパックなどを指定することはできません。依存関係は通常の依存関係と同様に動作しているようです。それは動作していないようです。 –
問題が見つかりました。私は ''は 'org.apache.plugins'であり、' org.apache.maven.plugins'ではないと指定しました。依存関係についてはあなたが正しいですが、私は今、上で説明したような他の問題を持っています。 –