gpt4 book ai didi

ant - 通过ant任务配置Worklight数据库时缺少ant属性

转载 作者:行者123 更新时间:2023-12-03 05:15:43 26 4
gpt4 key购买 nike

我正在将worklight 6.1官方部署ant任务集成到gradle构建脚本中。
我们将利用以下脚本来运行灵活的连续集成过程。

def antTaskLibClasspath = "ant-task-lib/worklight-ant-deployer.jar"

def verifyDatabaseArguments(String database){
switch(project.ext[database + 'Type']){
case 'derby':
def dbNameProp = database + 'Name'
def dbDirPathProp = database + 'Dir'
def dbProperties = ['databaseName':project.ext[dbNameProp], 'databaseDir':project.ext[dbDirPathProp] ]
.each { key, value ->
if(!value?.trim()){
def errMsg = "Missing mandatory parameter : ${key}"
println errMsg
throw new StopExecutionException(errMsg)
}
}
project.ext[dbDirPathProp] = Eval.me(""" "${project.ext[dbDirPathProp]}" """).replace("\\", "/")
def dbFile = file(project.ext[dbDirPathProp] + "/${project.ext[dbNameProp]}")
if(!dbFile.exists()){
if(dbFile.mkdirs()){
println "Create folders ${project.ext[dbDirPathProp]} for ${database} derby database"
}else {
def errMsg = "Can not create folders for ${database} derby database"
println errMsg
throw new StopExecutionException(errMsg)
}
}
break
case 'oracle':
break
default:
errMsg = "Unsupported database type"
println errMsg
throw new StopExecutionException(errMsg)
break
}
}

verifyDatabaseArguments("worklightDatabase")
verifyDatabaseArguments("worklightReportsDatabase")

task configure {
description "Configure database for worklight server"
doLast {

ant.typedef(name:'configureDatabase',
classname:'com.ibm.worklight.config.ant.database.ConfigureDatabaseTask',
classpath:antTaskLibClasspath
)

ant.configureDatabase(kind: "Worklight"){
switch(worklightDatabaseType){
case 'derby':
derby(database:worklightDatabaseName, datadir:worklightDatabaseDir)
break
}
}
ant.configureDatabase(kind: "WorklightReports"){
switch(worklightReportsDatabaseType){
case 'derby':
derby(database:worklightReportsDatabaseName, datadir:worklightReportsDatabaseDir)
break
}
}
}
}

这些是脚本开销中引用的属性。我已经在build.gradle所在的gradle.properties中设置了它们。
worklightDatabaseType=derby

# derby database name
worklightDatabaseName=WRKLGHT
# derby database file directory
worklightDatabaseDir=${System.properties['user.home']}/.derby/ibm

worklightReportsDatabaseType=derby

# derby database name
worklightReportsDatabaseName=WLREPORT
# derby database file directory
worklightReportsDatabaseDir=${System.properties['user.home']}/.derby/ibm

命令行显示ant错误消息,当我尝试使用命令$> gradle configure配置数据库后,我无法弄清楚出了什么问题。

第75行是我第一次调用ant.configureDatabase(...

我是否错过了工作灯6.1中未记录的任何必需配置?

我的jdk版本是jdk7_60,没有包装的gradle版本2.4。
任何建议/评论表示赞赏,谢谢〜

顺便说一句,如果有来自IBM mobilefirst团队的顾问在监视,
请考虑要求您的产品团队重命名其名称中带有破折号的ant任务。
看来Groovy AntBuilder无法加载ant元素名称,包括破折号,
因此我们必须解压缩worklight ant任务jar文件,并在defaults.properties中搜索所需的任务类,
然后在gradle脚本中手动使用类名重新定义ant任务。那不方便。
Worklight项目的构建进度很复杂。我们不喜欢使用ant来设置构建自动化。

在Peter发表建议后追加:

谢谢你,彼得。
采用您的方式后,我已经解决了 Ant 库的问题。
但是它再次卡住了,我无法解释错误消息。

首先,我认为这个问题是因为Worklight 6.1 ant部署任务可能与gradle不兼容,
所以我在下面写了ant build脚本来测试我的假设是否正确,
它实现了与以前的gradle脚本相同的构建逻辑和变量。

build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="install">
<loadproperties srcfile="build.properties" />
<taskdef resource="com/worklight/ant/defaults.properties">
<classpath>
<pathelement location="worklight-ant-task-libs/worklight-ant-deployer.jar"/>
</classpath>
</taskdef>
<target name="configure">
<configuredatabase kind="Worklight">
<derby database="${worklightDatabaseName}" datadir="${worklightDatabaseDir}"/>
</configuredatabase>
<configuredatabase kind="WorklightReports">
<derby database="${worklightReportsDatabaseName}" datadir="${worklightReportsDatabaseDir}"/>
</configuredatabase>
</target>
</project>

build.properties
# derby database name
worklightDatabaseName=WRKLGHT
# derby database file directory
worklightDatabaseDir=${user.home}/.derby/ibm
# derby database name
worklightReportsDatabaseName=WLREPORT
# derby database file directory
worklightReportsDatabaseDir=${user.home}/.derby/ibm

而且我的构建进度再次失败。
我已将ant错误消息日志文件上传到 google drive
谁能给我一些建议来帮助我解决这个问题?
谢谢〜

最佳答案

我将在这里使用大量猜测,但是根据this section of the Ant Manualant.library.dir仅由Ant的Launcher类设置,Gradle的Ant集成可能未使用该类。

我怀疑您正在使用的Worklight Ant任务假定已设置该属性并引发异常。您可以通过运行检查

 gradle --stacktrace configure

假设 configure是您要运行的任务。这将向您显示从何处引发异常(以及任何原因)。

您可能最好将解压后的Ant发行版添加到源树(或者可能只是其 lib目录),并将以下条目添加到项目根目录中的 gradle.properties文件中:
systemProp.ant.library.dir=<path to Ant>/lib

当然,您应该使用Ant安装的实际路径替换 <path to Ant>

关于ant - 通过ant任务配置Worklight数据库时缺少ant属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com