Gradle将所有模块添加为application.xml

时间:2016-10-20 10:11:16

标签: java java-ee gradle build.gradle ear

我的Gradle脚本中有以下EAR项目,它有2个部署依赖项:

  1. 一个EJB jar
  2. EJB客户端jar
  3. 我想要做的是在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。

0 个答案:

没有答案