나는 maven-ear-plugin 사이트의 예제 인 shows how to add third-party libraries to the generated application.xml을 따라 왔습니다. 그러나 예상대로 작동하지 않는 것 같습니다. 마찬가지로 웹 모듈 contextRoot도 무시됩니다.maven-ear-plugin이 jarModule을 application.xml에 포함하지 않았습니다.
documentation에 따르면 전적으로 가능해야합니다.
웹 모듈의 컨텍스트 루트는 이 컨텍스트 매개 변수를 사용하여 사용자 정의 할 수 있습니다.
생성 된 application.xml을 포함 하지 않습니다 (단지 EJB 클라이언트는 자바 항목에 포함 해야한다)을 제 3 자의 라이브러리 (즉 JarModule)을 유의하시기 바랍니다. 그러나 includeInApplicationXml 플래그을 지정하여 jar 종속성을 생성 된 application.xml에 에 포함시킬 수 있습니다.
내 application.xml에서 빌드를 실행할 때 다음과 같은 결과가 표시됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
"http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>MyApp.EAR</display-name>
<module>
<ejb>MyApp.jar</ejb>
</module>
<module>
<web>
<web-uri>MyApp.war</web-uri>
<context-root>/MyApp.Web</context-root>
</web>
</module>
</application>
다음의 maven configuraton (pom.xml).
...
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah</groupId>
<artifactId>MyApp.EAR</artifactId>
<version>1.0</version>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<groupId>maven-ear-plugin</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
<applicationName>MyApp</applicationName>
<modules>
<ejbModule>
<groupId>com.blah</groupId>
<artifactId>MyApp.EJB</artifactId>
</ejbModule>
<webModule>
<groupId>com.blah</groupId>
<artifactId>MyApp.Web</artifactId>
<contextRoot>MyApp</contextRoot>
</webModule>
<jarModule>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<includeLibInApplicationXml>true</includeLibInApplicationXml>
</jarModule>
</modules>
<archive>
<manifestEntries>
<WebLogic-Application-Version>${weblogic.version}</WebLogic-Application-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- web and ejb modules -->
<dependency>
<groupId>com.blah</groupId>
<artifactId>MyApp.EJB</artifactId>
<version>1.0</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.blah</groupId>
<artifactId>MyApp.Web</artifactId>
<version>1.0</version>
<type>war</type>
</dependency>
</dependencies>
...
는 내가 의도 한대로 application.xml을 생성하고 있지 않은지 즉시 분명하다.
- 제공되는 contextRoot가 application.xml에서 올바르지 않습니다. 대신 지정된 MyApp 대신 MyApp.Web의 기본 이름이 출력됩니다.
- 지정된 org.slf4j jarModule이 application.xml에서 완전히 누락되었습니다.
내가 뭘 잘못하고 있니?
Maven에서 디버그하는 방법은 다음과 같습니다.
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: org.apache.maven.plugins:maven-ear-plugin:2.4.2:generate-application-xml (default-generate-application-xml)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<description>${project.description}</description>
<displayName>${project.artifactId}</displayName>
<encoding default-value="UTF-8"/>
<generatedDescriptorLocation>${project.build.directory}</generatedDescriptorLocation>
<includeLibInApplicationXml default-value="false"/>
<project>${project}</project>
<version default-value="1.3"/>
<workDirectory>${project.build.directory}/${project.build.finalName}</workDirectory>
</configuration>
P. 나는 maven-ear-plugin 태그를 만들려고했지만 충분히 평판이 나지 않는 한 나를 허락하지 않을 것이다! 누군가가 그것을 만들 수 있다면 나는 감사 할 것입니다.
완전히 내 구성을 완전히 무시하는 것 같습니다. 어떤 아이디어? – mrswadge