我有一个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构建文件。
提前谢谢
答案 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;