适用于多种环境的gradle ear应用包装

时间:2014-05-21 17:40:22

标签: gradle war ear

我有一个Web企业应用程序,我正在尝试使用gradle(第一次)为它自动构建EAR文件。

我有2个项目

1是企业应用程序APP_EAR,另一个是动态Web应用程序APP,将作为war文件导出到主APP_EAR耳朵文件中。

我想出了如何使用gradle为动态网络应用生成war文件,我不知道如何使用gradle创建包含此war文件的ear文件。

我的APP的war文件包含每个环境的3个任务:

sys(系统测试),qa(质量控制)和生产刺激

我在build.gradle中为我的APP创建了3个任务,如下所示:

task buildSys {
dependsOn copySys, war
}

task buildQa {
dependsOn copyQa, war
}

task buildProd {
dependsOn copyProd, war
}

copySys,copyProd等...只是复制任务,在创建战争之前复制我所针对的环境的相应配置文件。

让我说我正在为sys创建一个war文件,然后执行gradle buildSys

我要做的是以下内容:

假设我想为sys环境创建一个EAR文件,我需要使用gradle来执行这些步骤:

1)在APP项目中执行buildSys,为sys环境创建war文件 2)执行buildSysEAR,将创建的war文件打包到ear文件中。

我不确定我的build.gradle中是否需要3个任务来APP_EAR打包每个环境的ear文件,或者我是否能用一个ear任务完成它并让它为该环境调用适当的war任务

我只是希望能够执行一个为此环境构建战争和耳朵的任务,我不确定如何将war文件绑定到ear文件和/或触发war文件的正确构建任务来自APP_EAR构建文件。

提前谢谢

2 个答案:

答案 0 :(得分:1)

Gradle支持使用插件创建EAR。您将WAR指定为依赖项,它将为您创建必要的文件。 (还有一个战争插件,它更简单)

apply plugin: "ear"

dependencies
{
   deploy project("some support project")  // only necessary for ejb jars
   earlib "log4j:log4j:1.2.17:jar"
}

ear
{
   appDirName "EarContent" // or wherever, defaults to src/main/application

   deploymentDescriptor
   {
       displayName = "app-ear"
       description = "my application"

       web = project("APP")
       value = web.name + '-' + web.version + ".war"
       webModule( value , "/web-context")  // this is the important line, I need the version number
   }
}

答案 1 :(得分:0)

假设项目A(EAR项目)具有build.gradle,并且在ear中,可以通过下面的代码解决此问题-在此示例中,假设“ B”是一个动态的Web应用程序,需要在项目“ A”中进行部署-

import React from 'react';
import classes from './BuildControls.css';
import BuildControl from './BuildControl/BuildControl';
const controls = [
    {label : 'Salad' , type :'salad'},
    {label : 'Bacon' , type :'bacon'},
    {label : 'Cheese' , type :'cheese'},
    {label : 'Meat' , type :'meat'},
];
const buildControls =(props) => { 
    <div className = {classes.BuildControls}>
        {controls.map(ctrl =>(
            <BuildControl Key ={ctrl.label} label={ctrl.label}/>
        ))}
    </div>
}

export default buildControls;