我在jboss-app.xml
中声明了自定义pom.xml
,但该插件正在jboss-app.xml
内生成一个内部空ear/META-INF
文件。
我根据此article创建了我的pom.xml
,其定义如下:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<data-sources>
<data-source>${artifactId}/src/main/resources/mytest-ds.xml</data-source>
</data-sources>
<jboss>${artifactId}/src/main/resources/jboss-app.xml</jboss>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<modules>
<ejbModule>
<groupId>com.testproject</groupId>
<artifactId>ejb-project</artifactId>
</ejbModule>
</modules>
</configuration>
</plugin>
但是,我无法处理我的自定义jboss-app.xml
。每次都会生成一个new是空描述符(没有定义的ejbs)。
答案 0 :(得分:2)
您应该只需在源代码树中包含jboss-app.xml
,Maven就会将其拉入。
maven-ear-plugin的项目目录结构如下所示:
|-- pom.xml
`-- src
`-- main
`-- application
`-- META-INF
|-- application.xml
`-- jboss-app.xml
然后只需运行mvn package
即可创建您的EAR。假设你的pom.xml的包装是'ear',它会将jboss-app.xml拉到你最后的耳朵里。
另外,我认为您的<datasources>...</datasources>
配置需要在<jboss>...</jboss>
标记内。
另请参阅:http://maven.40175.n5.nabble.com/Deployment-of-the-jboss-app-xml-file-td45009.html
答案 1 :(得分:1)
从文档中,jboss标记看起来会触发jboss-app.xml
的生成。如何省略此标记并生成ear
?
答案 2 :(得分:0)
替代方案是按照here所述通过application.xml
提取数据源。但由于<jarModule>
需要的是完整的maven工件,这种方式更长(可能对于JBoss以外的应用程序服务器):
•project/ds/pom.xml
:
<artifactId>project-ds</artifactId>
<packaging>jar</packaging>
<name>My DataSource</name>
•project/ds/src/main/resources/my-ds.xml
:
<datasources>
<local-tx-datasource>
...
•project/ear/pom.xml
(假设驱动程序也包装在EAR中):
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>project-ds</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>project-war</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>${jtds.driver.version}</version>
</dependency>
</dependencies>
...
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<modules>
<jarModule>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>${project.groupId}</groupId>
<artifactId>project-ds</artifactId>
<unpack>true</unpack>
<uri>/</uri>
<bundleFileName>my-ds.xml</bundleFileName>
<includeInApplicationXml>true</includeInApplicationXml>
</jarModule>
<webModule>
<groupId>${project.groupId}</groupId>
<artifactId>project-war</artifactId>
<contextRoot>${context.path}</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
将生成META-INF/application.xml
:
<application>
<display-name>project-ear</display-name>
<description>...</description>
<module>
<java>jtds-1.2.4.jar</java>
</module>
<module>
<java>my-ds.xml</java>
</module>
<module>
<web>
<web-uri>project-war-1.0.0.war</web-uri>
<context-root>/</context-root>
</web>
</module>
</application>