首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Artifactory & Groovy插件-如何获取Artifactory中所有存储库的列表

Artifactory & Groovy插件-如何获取Artifactory中所有存储库的列表
EN

Stack Overflow用户
提问于 2017-05-04 14:59:21
回答 1查看 1.3K关注 0票数 0

我正在使用Groovy编写一个Artifactory插件。我需要它来获取Artifactory中所有存储库的列表。

在插件的lib文件夹中,我添加了以下jar:

代码语言:javascript
复制
artifactory-java-client-services-2.3.2.jar

Intellij知道要完成artifactory对象的方法:printscreen of the intellij

我试着在groovy文件中写下:

代码语言:javascript
复制
import org.jfrog.artifactory.*
import org.jfrog.artifactory.client.*

....
....

def baseurl = <URL to the artifactory>
ArtifactoryClient artifactoryClient = new ArtifactoryClient();
def artifactory = artifactoryClient.create(baseurl, <the user name>, <the password>)
def allRepositories = artifactory.getRepositories()

但是,当我将导入添加到文件中时,Artifactory的控制台显示以下错误:

代码语言:javascript
复制
2017-05-04 09:42:04,468 [art-groovy-plugins-reloader] [ERROR] (o.a.a.p.GroovyRunnerImpl:302) - Error loading script from '..\etc\plugins\test.groovy'.
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during class generation: java.lang.NoClassDefFoundError: Unable to load class org.jfrog.artifactory.client.ArtifactoryClient due to missing dependency org/jfrog/artifactory/client/Artifactory

java.lang.RuntimeException: java.lang.NoClassDefFoundError: Unable to load class org.jfrog.artifactory.client.ArtifactoryClient due to missing dependency org/jfrog/artifactory/client/Artifactory
        at org.codehaus.groovy.control.CompilationUnit.convertUncaughtExceptionToCompilationError(CompilationUnit.java:1091)
        at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1069)
        at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:591)
        at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
        at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
        at groovy.util.GroovyScriptEngine$ScriptClassLoader.doParseClass(GroovyScriptEngine.java:274)
        at groovy.util.GroovyScriptEngine$ScriptClassLoader.parseClass(GroovyScriptEngine.java:243)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:212)
        at groovy.util.GroovyScriptEngine.loadScriptByName(GroovyScriptEngine.java:555)
        at org.artifactory.addon.plugin.GroovyRunnerImpl.loadScript(GroovyRunnerImpl.java:277)
        at org.artifactory.addon.plugin.GroovyRunnerImpl.getScripts(GroovyRunnerImpl.java:257)
        at org.artifactory.addon.plugin.GroovyRunnerImpl.reloadScripts(GroovyRunnerImpl.java:137)
        at org.artifactory.addon.plugin.GroovyRunnerImpl$ScriptsReloader.run(GroovyRunnerImpl.java:451)
Caused by: java.lang.NoClassDefFoundError: Unable to load class org.jfrog.artifactory.client.ArtifactoryClient due to missing dependency org/jfrog/artifactory/client/Artifactory
        at org.codehaus.groovy.vmplugin.v5.Java5.configureClassNode(Java5.java:391)

你知道这里出了什么问题以及如何修复吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 01:38:23

看起来您正在尝试开发一个Artifactory user plugin,并在此插件中使用Artifactory client。虽然这是可行的,但它可能不是最好的方法。

用户插件应该使用Artifactory public API (PAPI)来与Artifactory通信。

对于您的用例,您应该使用Repositories类中可用的方法来获取可用存储库的列表。

Artifactory客户端实际上在幕后使用Artifactory REST API,这可以通过用户插件完成,但比直接调用PAPI要慢。此外,客户端需要指定您的Artifactory URL,这是您在编写插件时需要关注的另一个问题。

如果您确实想在用户插件中使用客户端,则应该在plugins lib directory中放置相关的.jar文件(客户端和依赖项)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43775962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档