我的Gradle脚本中有以下EAR项目,它有2个部署依赖项:
我想要做的是在ear ear中创建一个包含2个jar的EAR,但只在application.xml中创建实际的EJB jar,即:
<?xml version="1.0" encoding="UTF-8"?>
<application id="Application_ID" version="6" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd">
<display-name>MyEJBEAR</display-name>
<module>
<ejb>MyEJB.jar</ejb>
</module>
</application>
这是我的build.gradle文件:
project(':MyEJBEAR'){
apply plugin: 'ear'
dependencies {
deploy project(':MyEJBClient')
deploy project(':MyEJB')
earlib <common jars>
}
}
生成的EAR结构是我想要的,但它包含这样的application.xml文件(即将所有部署依赖项添加为EJB):
<?xml version="1.0"?>
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
<display-name>MyEJBEAR</display-name>
<module>
<ejb>MyEJB.jar</ejb>
</module>
<module>
<ejb>MyEJBClient.jar</ejb>
</module>
<library-directory>lib</library-directory>
</application>
我试过像这样使用deploymentDescriptor,但我没有运气:
ear {
deploymentDescriptor{
module("MyEJB.jar", "ejb")
}
}
关于如何从application.xml文件中排除MyEJBClient.jar引用的任何想法?
修改:
通过将包含有效application.xml的现有(IDE Generated) META-INF 文件夹从EAR项目根目录转移到目录(例如MyEJBEAR / resources),我找到了解决方法。 )并添加以下内容
project(':MyEJBEAR')
封闭中的行:
耳朵{
appDirName = 'resources'
}
这是基于Gradle文档的this部分完成的,但我仍然需要以某种方式生成来自我的构建脚本的有效application.xml。