我正在编写一个groovy脚本,希望通过存储在同一文件夹中的属性文件来控制它。但是,我希望能够从任何地方调用此脚本。当我运行脚本时,它总是根据运行它的位置而不是脚本所在的位置来查找属性文件
如何从脚本中访问脚本文件的路径?您认为新文件(“.”)不起作用是正确的。返回工作目录
获取脚本目录
scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
获取脚本文件路径的步骤
scriptFile
我想使用groovy的mixin特性将方法作为“类(静态)方法”而不是实例方法导入。当我使用mixin时,即使我的mixin类中有一个静态方法,它也会转换为目标类中的一个实例方法。我希望导入的方法是一个类(静态)方法。有什么好方法可以做到这一点吗 我不知道如何使用mixin将静态方法添加到类中,但是您可以通过metaClass.static属性将静态方法添加到类中。下面是一个添加静态fqn()方法的示例,该方法打印类的完全限定名
Class.metaClass.static.fqn = { de
我想根据当前使用的开发或测试模式,在引导类中运行特定的登录
我该怎么做?来自官方文件
import grails.util.Environment
class BootStrap {
def init = { servletContext ->
def currentEnv = Environment.current
if (currentEnv == Environment.DEVELOPMENT) {
// do
是否可以使用任意路径访问Xml节点
例如:给定xml:
<records>
<bike name='Chopper' />
<car name='HSV Maloo' make='Holden' year='2006'>
<country>Australia</country>
<record type='speed'>Production Pickup Tru
我有两个脚本,我试图测试通过一个参数,但失败了。我检查了GroovyScriptEngine的文档,但它似乎没有处理我希望传递参数而不是属性-值对(在绑定中)的情况
以下是我得到的错误:
C:\AeroFS\Work\Groovy_Scripts>groovy scriptengineexample.groovy
hello, world
Caught: groovy.lang.MissingPropertyException: No such property: args
下面是我试图作为单例执行的代码
MyResourceBundleSingleton.groovy//groovy类
@Singleton
class MyResourceBundleSingleton {
public ResourceBundle getResourceBundle () {
return someService.getMyResourceBundle() // this bundle is returned by calling a separate
在下面的代码中,x.test()返回[1,2]
所以y=[1,2]
然而f([1,2])打印1,但是f(y)打印2
如何编写f(y)以便它打印1
相反,f(z)打印1,即使z=y
def f = { Object... args -> println args.size(); };
class Test { Object[] test() { return [1,2]; } }
def x = new Test();
def y = x.test();
def z = [1,2];
我对xpp3有一个要求,我表示为:
// TestScript.groovy
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
import org.xmlpull.v1.XmlPullParserFactory;
println "Created: " + XmlPullParserFactory.newInstance()
运行$groovy TestScript.groovy失败
捕获:org.xmlpull.v1.XmlPu
如何将同一步骤添加到所有作业中?我们有50多个作业,因此很难将指向所需groovy代码的链接复制粘贴到每个作业中。我通常通过更新受影响作业的config.xml来进行类似的大规模更改。每一个好的编辑器都应该有一个对文件有效的搜索和替换功能。使用以下工作流
关闭詹金斯
更新job config.xml文件
启动詹金斯
还有其他可能的工作流,如下所示
1.更新job config.xml文件
2.重新加载配置
但是,对于第二个选项,我不知道在重新加载配置时如果作业正在运行,它会产生什么影响。以下脚本
我正在使用带有servlet的模板Spring引导应用程序。当我将最新的Jersey(用于jax rs)添加到应用程序中,然后将Groovy框架添加到应用程序中(仅用于测试)时,我开始在IntelliJ中运行应用程序时遇到问题
Groovy类路径上的一些库似乎与来自Jersey的库(ServletAPI和ASM)发生冲突,但我还不能100%确定这就是问题所在。可以肯定的是,IntelliJ构建的类路径与maven的不同
似乎与spring boot maven插件的技巧有关,但这只是一种怀疑。通
我正在尝试使用system groovy脚本作为构建步骤来操作我们的一个作业中的一些变量,如下所示:
//Current Thread run
def thr = Thread.currentThread()
def current_build = thr?.executable
//Get upstream job
def parent_build = current_build.getCause(hudson.model.Cause.UpstreamCause).getUpstream
我是groovy的新手。想知道如何从下面的sql查询返回的给定sql结果中获取行数。我在谷歌上搜索了很多,但没有找到合适的解决方案
这是我的sql查询类代码
def sql = Sql.newInstance(dataSource);
try
{
data = sql.rows("select field_value,form_table_column_name from
form_tbl where form_id=1");
作为Gradle和Groovy的新手,我发现自己很难理解build.Gradle脚本的语法
我理解(至少我认为是这样)build.gradle是作为DSL使用的普通groovy代码,其中关键字在别处定义
请解释一下不同的部分是什么。摘自教程:
defaultTasks 'distribution'
task distribution << {
println "We build the zip with version=$version"
}
task release(d
我已经在Groovy和Grails上工作了几个星期,没有任何问题
我刚刚遇到一个问题,任何文件创建命令,如
def file = new File("test.txt")
只是在运行时失败
Class groovy.lang.GroovyRuntimeException
Message:Could not find matching constructor for: bcp.File(java.lang.String)
感谢您的帮助。试试看
def file = new java.io.Fi
我有一个如下的groovy列表
def permissions = [
TESTENTITY.ADMINISTER,
TESTENTITY.CREATE,
TESTENTITY.DELETE,
TESTENTITY.READ,
TESTENTITY.UPDATE,
TESTBEAN.ADMINISTER,
TESTBEAN.CREATE,
TESTBEAN.DELETE,
TESTBEAN.READ,
TESTBEA
简单的示例:
在集合上使用.each{}:
def adults = Person.findAllByAgeGreaterThan(18)
adults.each{adult ->
//perform action on adult
}
def adults = Person.findAllByAgeGreaterThan(18)
for(adult in adults){
//perform action on adult
}
使用for对集合进行迭代:
def
我将从代码开始:
import java.util.stream.Stream
import java.util.stream.StreamSupport
def hasMore1 = true
def iter1 = new Iterator<Integer>() {
boolean hasNext() { def retVal = hasMore1; hasMore1 = false; retVal }
Integer next() { 42 }
}
def h
我想更新zipfile中文本文件的内容
我无法找到如何做到这一点,下面的代码工作不正常
谢谢你的帮助
import java.util.zip.ZipFile
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
String zipFileFullPath = "C:/path/to/myzipfile/test.zip"
ZipFile zipFile = new ZipFile(zipFileFullPat
我正在尝试将Elasticsearch聚合中的小数点四舍五入到2位,但我无法做到这一点……我正在使用Groovy作为我的脚本引擎
...
"aggs": {
"avg_response_time": {
"avg": {
"field": "exec_time",
"script": "_value.round(2)"
}
},
...
有什么帮助吗?那么确切的问题是什么?错
我试图使用groovy脚本否定一个变量,但使用(!)它似乎不起作用,这些变量是从运行groovy构建流的jenkins控件传递的:
def P = "arg"
def resolver = build.buildVariableResolver
def V = resolver.resolve(P)
print "V is " + V
print "negated V is " + !V
在两张照片中,我得到了相同的值 使用Java的Boolean.valueOf()或Groovy的Str
我有一个控制器,它将excel中的测试数据传递到另一个名为SERVICE_APP project的项目的属性中
当我使用testcase SoapUI运行控制器时,它运行正常。但当我从Project launch/Testsuite launch使用命令行/soapUI运行时,我得到了错误“getProjectByName()on null对象”
16:20:53,896 ERROR [SoapUI] An error occurred [Cannot invoke method getProj
我很好奇,出于性能原因,for..in是否应该优先于。每个。for。。in是标准语言流控件的一部分
相反,每个调用一个闭包,因此会产生额外的开销
.each{…}相当于方法调用。each({…})
此外,由于它是一个闭包,在每个代码块内,您不能使用break和continue语句来控制循环
更新的基准Java 1.8.0_45 Groovy 2.4.3:
每个{}3327981
对于(){
下面是另一个迭代次数为100000次的基准测试:
lines = (1..100000)
// wi
我是一名Java开发人员,刚刚加入一个已经使用Gradle的项目。在build.gradle文件中,我有如下语句
springBoot {
backupSource = false
}
checkstyle {
configProperties = [basedir: projectDir]
}
task bowerInstall(type: Exec, dependsOn: npmInstall) {
commandLine 'node', 'node_modules/bowe
我有一个类,它包含一个成分列表,并提供一个函数服务,现在可以打印这些成分
class CookDSL {
List<String> ingredientsToCook
CookDSL(List<String> ingredients){
ingredientsToCook=ingredients
}
void SERVE(Closure closure){closure(ingredientsToCook)}
}
输出:
[X, Y, Z]
我需要使用groovy访问Jenkins中的用户详细信息。我就是这样做的
cause = build.getCause(hudson.model.Cause.UserIdCause.class);
username = cause.getUserName()
User id = User.get(cause.getUserId())
println("user id :: "+ cause.getUserId())
println("user name :: "+ username)
pri
我目前正在Jenkins中使用“执行系统groovy脚本”。我在Jenkins的编辑器框中编写了以下代码
import hudson.model.*
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
// Get the list of all jobs and print them
activeJobs = hudson.model.Hudson.instance.items.findAll{job -> jo
我在groovy上过课
class WhsDBFile {
String name
String path
String svnUrl
String lastRevision
String lastMessage
String lastAuthor
}
和映射对象
def installFiles = [:]
这个循环由
WhsDBFile dbFile = new WhsDBFile()
installFiles[svnDiffStatus.
我需要设置证书的相关链接。但在WS-Security配置-密钥库中,我只能设置绝对路径。如何使用脚本来实现这一点
import com.eviware.soapui.settings.SSLSettings
import com.eviware.soapui.SoapUI
// set
SoapUI.settings.setString( SSLSettings.KEYSTORE, pathToKeystore )
SoapUI.settings.setString( SSLSettings
groovy中的运行时混合的目的是什么
混合是向类添加功能性而不存在多重继承问题的一种方法。但它在Groovy中的用途是什么?特质也可以做到这一点
注释@Mixin被认为是不推荐使用的。运行时mixin有一天会有同样的命运吗?运行时mixin使我们能够在运行时向现有类添加方法。答案的重要部分是“存在”和“运行时”
因此,您可以在运行时轻松地将新方法添加到任何第三方库。运行时混合使我们能够在运行时将方法添加到现有类中。答案的重要部分是“存在”和“运行时”
因此,您可以在运行时轻松地向任何第三方库添
我有两个数组列表。一个是[[Account:value,Budget:value]],另一个是[[Account:value,cYBudget:value]]我想以以下格式的列表结束:[[Account:value,Budget:value,cYBudget:value]]
数据的一个例子是:
budProp=[[ACCTCODE:6201,预算:2500],[ACCTCODE:7999,预算:1500]]
budCyExp=[[ACCTCODE:6201,cYBudget:1000],[ACC
请看这段代码:
import java.util.logging.Logger
class Base {
Logger log = new Logger(Base.getClass().name);
static main(args) {
def b = new Base();
b.log.info('hello');
}
}
当我编译它时,我没有看到任何错误或警告。
但当我尝试执行它时,我看到了空输出。
为什么?不要实例化新的记录器,请使用Logger.g
我开始学习Groovy,并了解到括号在方法调用中是可选的,所以
def list = [0, 1, 2, 3]
list.each ({ item ->
println "Item: $item"
})
与
def list = [0, 1, 2, 3]
list.each { item ->
println "Item: $item"
}
但是现在发现了这个例子
def list = [0, 1, 2, 3]
我有一个对象列表如下
[["GX 470","Model"],["Lexus","Make"],["Jeep","Make"],["Red","Color"],["blue","Color"]]
我想把它转换成
{"Model":["GX 470"],"Make":["Lexus","Jeep"],"Color":["Red", "blue"]}
我试过了
list.groupBy{ it[1] }
但这会让我回心转意
{"Model":[["GX 470","Model"]],"Make
我只想在满足条件时调用一个方法,在Python中,我将执行以下操作:
print_static_content() if condition
这可以通过groovy实现吗
脚注:我知道Groovy有一个三元运算符,但它会返回一个值。如果(条件)打印静态内容()正是我需要的,我正在尝试:消息?System.err.println(消息)@如果您不想将其作为答案添加,我会将您的解决方案标记为正确的解决方案。如果您觉得奇怪,也可以执行条件和打印\u static\u content()@JBNize
我看起来像:
{
"days": [
{
"mintemp": "21.8"
}
]
}
使用Groovy,我将其解析为:
class WeatherRow {
String mintemp
}
def file = new File("data.json")
def slurper = new JsonSlurper().parse(file)
def days = slurper.days
def first
我有一个接口和一个类,它实现接口的方法,但不使用implements关键字来实现。因此,我在类的实例上使用作为-强制。到目前为止,这已按预期工作,但对于toString(),它不是在代理上而不是在活动实例上调用的
考虑以下示例:
class CoercionToString {
public static main(String[] args) {
A a = new A();
a.foo();
println a;
B
纯粹出于兴趣,我试图确定是否可以通过使用命名和默认构造函数参数来完全消除在Groovy中使用构建器模式的需要;也就是说,只使用内置的语言特性来解决伸缩构造函数的问题
例如,在Kotlin中,可以执行以下操作:
data class Thing(val mandatory1: Int,
val mandatory2: Int,
val optional1: Int = 100,
val optional2: Int =
我们有以下情况:
我们有两个groovy脚本,script1.groovy和script2.groovy,
script1.groovy正在执行script2.groovy
有什么方法可以在script2.groovy中调用,以找出谁的脚本称为script2.groovy?您可以提供更多信息,例如,如何从script1.groovy文件?@Library(“某个库名称”)加载script2.groovy,其中包含script2.groovy和其他脚本。在script1.groovy中,我们有一些
我试图在当前时间上只增加小时。
例如:用户当前时间为2017/08/28 17:27:23
我想要的结果是2017年8月28日星期一18:00:00——这意味着它只会增加小时数,而休息分和秒数应该为零
def d = (new Date()).format('yyyy/MM/dd HH:mm:ss')
log.info d
use(groovy.time.TimeCategory) {
//Add increment hour by 1
def incre = new Date(
当我有一个简单的类层次结构时,我正确地得到了一个异常:
groovy:000> class Parent {}
===> true
groovy:000> class Child1 extends Parent {}
===> true
groovy:000> class Child2 extends Parent {}
===> true
groovy:000> Child1 c = new Child2()
ERROR org.codehaus.gr
标签: Groovy
overridingextendsimplements
使用简化的代码更容易解释。我有以下接口
interface FooInterface{
public void foo()
}
我从一个库中获得了以下JAVA父类(注意最后一个关键字):
最后,儿童班:
class Child extends Parent implement FooInterface{
}
这导致编译错误,我无法重写子类中的最终父方法,从技术上讲,我不是。我觉得这是一种我不熟悉的传统主义。因此,我的问题是:
为什么编译器认为我在重写
我怎样才能编译这个
无法复制
最后方法:
标签: Groovy
vert.xvertx-verticle
我得到了一个相当小的Verticle,它应该连接到数据库,定期轮询一个表,并将对象发送到事件总线。到目前为止,我可以连接到数据库,但之后处理程序没有执行,轮询计时器也没有启动。我想这是显而易见的,感谢你的帮助
我使用Vert.x3.8承诺(就像链接后面的示例一样)。正如您在我的代码中所看到的,使用不推荐的期货效果很好!但是谁想使用不推荐的代码呢?要么我做错了什么,要么那是Vert.x中的一个bug,我不这么认为
我的x顶点是3.8.1
class JdbcVerticle extends Abs
如何在Groovy中设置数值的固定小数位数?
显然,对于4位小数以上的数字来说这很容易,但是这一位呢?
例如:
def num = 2.58
return 2.5800
我想避免把这些变成弦
感谢您的帮助,谢谢在java/groovy中处理十进制格式的正常方法是java类。以下代码:
import java.text.DecimalFormat
def num = 2.58
def df = new DecimalFormat("#0.0000")
def formatted = df
我正在尝试在soapUI测试用例中运行Groovy脚本
脚本除了获取响应、提取一个值并在下一个请求中使用它之外什么都不做。当我独立运行脚本时,提取工作正常。但是,当我尝试运行我的测试用例时,我得到了以下错误:
错误:
java.lang.ClassCastException:java.lang.String不能强制转换为org.apache.log4j.Logger
在com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.
您好,我创建了一个groovy脚本,并使用Grab下载了一些依赖项。
在编译时,我抛出了以下异常
Caught: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.xerces.dom.NodeImpl.getChildNodes()Lorg/w3c/dom/NodeList;" the class lo
我试图从数组中删除空元素,即双引号,但我不确定如何遍历json数组。下面是我的json
{
"body": {
"newId":"value1"
},
"header": {
"appId": "someVal",
"pricingSchedule": [
"price1",
"price2",
"price3",
"",
"",
""
]
},
"trail": {
我是groovy的新手。我需要使用groovy运行一个外部exe应用程序。我有下面的代码
def cmd = ['cmd', '/c', "c:\htmlimageconverter.exe"];
def sout = new StringBuilder();
def serr = new StringBuilder();
def proc = new ProcessBuilder(cmd);
Process process = proc.start();
process.consumeProc
以下是我正在使用的脚本:
import.groovy.json.JsonSlurper
def response==messageExchange.response.responseContext
def json = new JsonSlurper().parseText(response)
assert context.FirstTestCase().getPropertyValue("contractNumber")==json.results[3].object
标签: Groovy
camundacamunda-modeler
我安装了camunda bpm引擎,我正在尝试做一个简单的测试来了解内联脚本是如何工作的。我有以下程序
但是,我运行camunda bpm平台的控制台没有显示任何内容。有人知道怎么做吗
提前感谢添加scriptFormat=“groovy”,让camunda知道如何处理脚本。您可以通过在modeler表单字段中键入groovy来实现这一点
请参阅。添加scriptFormat=“groovy”,让camunda知道如何处理脚本。您可以通过在modeler表单字段中键入groovy来实现这一点
标签: Groovy
returnclosureskeyword
我刚刚开始学习Groovy。然后我进入了这个:
因此,在方法定义的末尾可以省略“return”。好吧
尽管我更愿意亲自使用它,但我还是想看一看。
我测试了一些简单的案例以了解其工作原理:
e、 g.demo.groovy:
def a1 = { return { return 'hi'} }()
println a1
def a2 = { return {'hi'} }()
println a2
def a3 = { {'hi'} }()
println a3
def a4 = { {-&
1 2 3 4 5 6 ...
下一页 最后一页 共 97 页