执行Nexus 3嵌入式groovy

qhhrdooz  于 2023-01-08  发布在  其他
关注(0)|答案(3)|浏览(182)

我想使用Nexus3的嵌入式groovy,而不是安装安装openjdkjava的groovy包。有没有简单的方法可以做到这一点?
我想使用嵌入式groovy运行此命令:

groovy addUpdateScript.groovy -u "admin" -p "admin123" -n "raw" -f "rawRepositories.groovy" -h "http://localhost:8081"

这是为了将groovy脚本支持添加到Nexus3 Chef cookbook:https://supermarket.chef.io/cookbooks/nexus3

jaql4c8m

jaql4c8m1#

Nexus Repository Manager中嵌入的groovy仅在应用程序的类路径中可用。安装客户端groovy系统或使用shell脚本(使用简单的bash命令)上传groovy脚本会更容易。脚本示例中也包含这些示例。您可以在https://github.com/sonatype/nexus-book-examples/tree/nexus-3.x/scripting/simple-shell-example的示例存储库中找到它们
我还在http://www.sonatype.org/nexus/2016/06/08/integrating-nexus-repository-3/上整理了一篇博文和视频演示
希望能有所帮助。

mwecs4sa

mwecs4sa2#

在Nexus 3.10中,您可以免费获得一个Groovy 2.4.11,大小为$NEXUS_HOME/nexus-3.10.0-04/system/org/codehaus/groovy/groovy-all/2.4.11
您可以编写一个测试脚本:

println "hello world"

并执行它

java -jar groovy-all-2.4.11.jar printme.groovy

当然,您仍然需要JDK/JRE...

4c8rllxm

4c8rllxm3#

enter code here我找到了解决方案!您必须首先将Groovy脚本转换为JSON文件,然后将该JSON文件传递给您正在使用的curl或API(用于创建脚本),我们可以使用以下python文件来完成此操作:

import json

with open("[THE GROOVY FILE]", "r") as inputfile:
    filedata = inputfile.read()
    jsondata = {}
    jsondata['name'] = 'testscript2'
    jsondata['type'] = 'groovy'
    jsondata['content'] = filedata

    with open("[OUTPUT FILE]", "w") as outputfile:
        outputfile.write(json.dumps(jsondata))

输出文件如下所示:

{
"name": "name",
"type": "groovy",
"content": "..."
}

然后使用这个JSON输出文件,并将其传递给该命令,就可以了!使用REST API创建脚本的命令是:

curl -v -X POST -u admin:admin --header "Content-Type: application/json" "http://<url>/service/rest/v1/script" -d @{output}.json

上述命令将创建一个脚本,您可以使用以下命令执行该脚本:

curl -v -X POST -u admin:admin --header "Content-Type: application/json" "http://<url>/service/rest/v1/script/{name}/run

相关问题