우리는 Ant에서 빌드하는 데 사용되는 상당히 복잡한 프로젝트를 가지고 있지만 지금은 Maven으로 이동 중입니다.Ant에서 Maven으로 이동 : EAR 프로젝트를 어떻게 설정합니까?
- 코어 jar와 코어 jar에 의존하는 다양한 필터 jar가 있습니다.
- 이러한 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
)의 세 가지 프로젝트를 호출 pom.xml
부모 디렉토리. foo-jar
및 foo-sar
이 모두 올바르게 빌드됩니다 (즉, Ant 빌드의 결과와 일치했습니다). foo-ear
프로젝트는 오류없이 작성되지만 귀의 루트에 foo-sar
및 foo-jar
파일을 포함하지 않습니다.
나는 아주 간단한 것을 놓치고 있습니다. 어쩌면 추가 매개 변수 또는 다른 구성 일 수 있습니다.
다음은 귀의 pom.xml
을이다 : 나는 <groupId>
는 maven-ear-plugin
에 대한 org.apache.maven.plugins
에 org.apache.plugins
하지로 설정되어 있다는 것입니다 가지고 있던 문제 중 하나 실현
<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>
새로운 문제
합니다. 메이븐 (Maven)이 전에이 오류를 감지하지 못했고 전에 오류가 발생했다는 것을 알지 못합니다. 나는 올바른 그룹을 설정하면
, 나는 application.xml
내가 <generateApplicationXml>
이 거짓이라고 규정에도 불구하고 건설되고 있음에 주목하기 시작했다. 나는 이것이 generate-application-xml
목표에서 일어 났음을 깨달았으며, 분명히 <configuration>
의 기본 목표는 ear
입니다.따라서 generate-application-xml
목표는 <execution>
이고 목표는 ear
입니다.
재미 있고 재미 있습니다. 나는 하나의 사소한 문제을 제외하고 을 생성 할 수있는 귀를 입수했습니다
은 귀에서 종속성 내가 다르게 조금을 내 모듈 정보를 구성에도 불구하고 어쨌든 다운로드되고있다. 귀가 생성되는 것 여기
<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
포함되고 여기에 귀 내 pom.xml
이야? 내 귀의 <module>
섹션을 내 모듈에 내 종속성을 매핑해야합니까? <configuration>
당신은 또한 유물 이름을 제공하는 것만으로는 충분하지 않습니다, EAR 프로젝트에 대한 의존성로 항아리 모듈을 추가한다고 생각합니다. – arghtype
''에 모듈을 포함 시켰고 모듈을 다운로드했지만'pom.xml'의''섹션이 무시되었습니다. 나는 의존성이 정상적인 의존성처럼 행동하는 것처럼 보인다. 위치, 이름, 압축을 풀지 않은 것을 지정할 수 없다. 그것은 작동하지 않는 것 같습니다. –
문제점을 발견했습니다. 나는 ''이'org.apache.maven.plugins'가 아니라'org.apache.plugins'라고 지정했습니다. 당신은 종속성에 대해 옳았 습니다만, 지금은 위에서 설명한 다른 문제들을 가지고 있습니다. –