gpt4 book ai didi

grails - Ant 构建任务:如何使用grails 2.5更改ant命令的basedir(例如如何做 “cd”)

转载 作者:行者123 更新时间:2023-12-02 14:41:03 25 4
gpt4 key购买 nike

来自grails“Scripts”目录中指定的目标的以下ant片段创建带有所有类的校验和的单个文件,因此可以在目标服务器上对其进行检查。

ant的输出是一个像这样的文件:

c9b1c71b31e53e99ff31b4be0a1284558aa019ec target/classes/bo/ApiRequestFilters$_closure1.class
ff936fddc1b99ba323493b131d271ca4feb0f5dd target/classes/bo/ApiRequestFilters.class
df7a12fe1182b5fc10177a2559a3a0cbb0709e29 target/classes/com/xxx/yyy/apiConstants.class

问题是文件路径中的“目标”一词。将应用程序部署到webapp下的tomcat时,没有目标。

如何避免这种情况?例如。如果ant.concat函数采用了basedir:“target”,如果您可以执行ant.cd(“target”)或类似的操作,它将解决此问题,或者您可以为每个目标指定一个baseir,但这似乎没有可能?

资源:
ant.checksum(fileext:".sha1", algorithm: "SHA", forceoverwrite: "yes", pattern: "{0} {3}") {
fileset(dir: "target/classes") {
include(name:"**/*.class")
}
}

ant.concat(destfile:"target/classes.sha1") {
fileset(dir: "target/classes") {
include(name:"**/*.sha1")
}
}

我发现了一种黑客手段-使用后从sha1文件中删除“target /”:
ant.replace(file:"target/classes.sha1", token:" target/", value: " ")

有没有更好的办法?

最佳答案

为了获得小的优化改进,请考虑通过在replace下嵌套 filterchain 来删除concat任务。

在下面的示例中, replaceregex 过滤器使用正则表达式来匹配以哈希值开头,后跟字符串target/的行。如果该行的开头匹配,则将其替换为已删除的target/部分:

ant.concat(destfile:"target/classes.sha1") {
fileset(dir: "target/classes") {
include(name:"**/*.sha1")
}
filterchain {
tokenfilter {
// Using the regex "pattern" to match:
//
// "^": from the start of each line...
// "[0-9a-f]+": ...match as many hexadecimal characters as possible...
// " ": ...followed by a space character...
// "target/": ...followed by the string "target/".
//
// "([0-9a-f]+ )": captures the matching characters in group 1
//
// Then in "replace":
// "\\1": inserts capture group 1
//
replaceregex(pattern: "^([0-9a-f]+ )target/", replace: "\\1")
}
}
}

上面的示例避免了 concat将文件写入磁盘,然后 replace任务重新打开文件并将其重新写入的I / O惩罚。

关于grails - Ant 构建任务:如何使用grails 2.5更改ant命令的basedir(例如如何做 “cd”),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639725/

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