在哪里可以找到org.jenkinsci.plugins.workflow.steps.FlowInterruptedException with gradle?

在哪里可以找到org.jenkinsci.plugins.workflow.steps.FlowInterruptedException with gradle?,jenkins,gradle,groovy,jenkins-pipeline,Jenkins,Gradle,Groovy,Jenkins Pipeline,我有下面的版本 apply plugin: 'groovy' apply plugin: 'idea' apply plugin: 'java' repositories { mavenCentral() maven { url 'https://repo.jenkins-ci.org/releases' } maven { url 'https://repo.jenkins-ci.org/public' } } sourc

我有下面的版本

apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'java'
repositories {
    mavenCentral()
    maven {
        url 'https://repo.jenkins-ci.org/releases'
    }
    maven {
        url 'https://repo.jenkins-ci.org/public'
    }
}
sourceSets {
    main {
        groovy {
            srcDirs = ['src']
        }
    }
    test {
        groovy {
            srcDirs = ['test']
        }
    }
}
dependencies {
    compile group: 'org.jenkins-ci.main', name: 'jenkins-core', version: '2.76'
    compile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-step-api', version: '2.13'
    compile 'com.cloudbees:groovy-cps:1.14'
    compile 'org.connectbot.jbcrypt:jbcrypt:1.0.0'
    compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
    compile 'org.codehaus.groovy:groovy-all:2.4.12'
    testCompile 'junit:junit:4.12'
}
当我运行“gradle build”时,出现以下错误:

> Task :compileGroovy FAILED
startup failed:
/home/user/myproject/SomeClass.groovy: 26: unable to resolve class org.jenkinsci.plugins.workflow.steps.FlowInterruptedException 
@ line 26, column 11.
        } catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException flowInterruptedException) {
            ^
1 error
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileGroovy'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
1 actionable task: 1 executed
就好像它没有看到“org.jenkinsci.plugins.workflow.steps.FlowInterruptedException”,但我添加了工作流步骤api,它应该可以找到它

我做错了什么?如何修复


谢谢

'org.jenkins ci.plugins.workflow:workflow step api:2.13'
依赖项有一个POM,其中包含以下内容(取自):

hpi
Gradle检索的依赖项是
hpi
工件,而不是指向此依赖项时的
jar
工件。这可以通过以下任务显示:

tasks.create('showDependencies')){
首先{
final config=configurations.getByName(sourceset.getByName('main')。compileClasspathConfigurationName)
config.resolvedConfiguration.resolvedArtifacts.findAll{it.moduleVersion.id.group.contains('jenkins')}。每个{
println(“已解析的依赖项:id=${it.id},扩展=${it.extension},分类器=${it.classifier}”)
}
}
}
输出:

 > Task :showDependencies
Resolved dependency: id=jenkins-core.jar (org.jenkins-ci.main:jenkins-core:2.76), extension=jar, classifier=null
Resolved dependency: id=workflow-step-api.hpi (org.jenkins-ci.plugins.workflow:workflow-step-api:2.13), extension=hpi, classifier=null
Resolved dependency: id=cli.jar (org.jenkins-ci.main:cli:2.76), extension=jar, classifier=null
Resolved dependency: id=trilead-ssh2.jar (org.jenkins-ci:trilead-ssh2:build-217-jenkins-11), extension=jar, classifier=null
Resolved dependency: id=icon-set.jar (org.jenkins-ci.plugins.icon-shim:icon-set:1.0.5), extension=jar, classifier=null
Resolved dependency: id=remoting.jar (org.jenkins-ci.main:remoting:3.11), extension=jar, classifier=null
Resolved dependency: id=version-number.jar (org.jenkins-ci:version-number:1.4), extension=jar, classifier=null
Resolved dependency: id=crypto-util.jar (org.jenkins-ci:crypto-util:1.1), extension=jar, classifier=null
Resolved dependency: id=bytecode-compatibility-transformer.jar (org.jenkins-ci:bytecode-compatibility-transformer:1.8), extension=jar, classifier=null
Resolved dependency: id=structs.hpi (org.jenkins-ci.plugins:structs:1.5), extension=hpi, classifier=null
Resolved dependency: id=symbol-annotation.jar (org.jenkins-ci:symbol-annotation:1.5), extension=jar, classifier=null
Resolved dependency: id=annotation-indexer.jar (org.jenkins-ci:annotation-indexer:1.12), extension=jar, classifier=null
Resolved dependency: id=task-reactor.jar (org.jenkins-ci:task-reactor:1.4), extension=jar, classifier=null
Resolved dependency: id=commons-jelly.jar (org.jenkins-ci:commons-jelly:1.1-jenkins-20120928), extension=jar, classifier=null
Resolved dependency: id=commons-jexl.jar (org.jenkins-ci:commons-jexl:1.1-jenkins-20111212), extension=jar, classifier=null
Resolved dependency: id=memory-monitor.jar (org.jenkins-ci:memory-monitor:1.9), extension=jar, classifier=null
Resolved dependency: id=jmdns.jar (org.jenkins-ci:jmdns:3.4.0-jenkins-3), extension=jar, classifier=null
Resolved dependency: id=constant-pool-scanner.jar (org.jenkins-ci:constant-pool-scanner:1.2), extension=jar, classifier=null
Resolved dependency: id=dom4j.jar (org.jenkins-ci.dom4j:dom4j:1.6.1-jenkins-4), extension=jar, classifier=null
有几种方法可以使用Gradle更好地处理依赖关系。更改依赖关系的一种可能方法是添加带有扩展的。根据您希望依赖关系结束的方式,这可能无法解决您的确切用例,但有望为您指明一个方向:

compile(组:“org.jenkins ci.plugins.workflow”,名称:“工作流步骤api”,版本:“2.13”){
人工制品{
名称='工作流步骤api'
类型='jar'
}
}

作为补充说明,在Jenkins插件生态系统中,和一起工作以进行依赖关系管理,这样您就不会遇到这样的问题。

显然,我需要添加ext jar。这是我的构建文件

apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'java'
repositories {
    mavenCentral()
    maven {
        url 'https://repo.jenkins-ci.org/releases'
    }
    maven {
        url 'https://repo.jenkins-ci.org/public'
    }

}
sourceSets {
    main {
        groovy {
            srcDirs = ['src']
        }
    }
    test {
        groovy {
            srcDirs = ['test']
        }
    }
}
dependencies {
    compile group: 'org.jenkins-ci.main', name: 'jenkins-core', version: '2.76'
    compile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-step-api', version: '2.13', ext: 'jar'
    compile 'com.cloudbees:groovy-cps:1.14'
    compile 'org.codehaus.groovy:groovy-all:2.4.8'
    compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
    testCompile 'junit:junit:4.12'
}

非常感谢。我试着在你重新编译的时候修改我的gradle文件,这是第二个选项的结果,基本上我需要从gradle切换到Maven,并将项目构建为Maven项目,对吗?这是你不必切换到Maven的gradle文件。Gradle在很多方面都比Maven好得多,但Jenkins生态系统是建立在Maven之上的。任何你在Gradle身上遇到的问题(比如这一个),你都必须自己解决,因为Gradle周围还没有一个大的Jenkins社区。今天我将再次查看我的代码片段,以确保我给了您正确的语法。@ddreian我认为最后一次编辑应该(祈求好运)设置正确的依赖项(至少对于您当前的问题)。感谢您的帮助!您的信息为我指明了正确的方向,但由于某些原因,您提出的修复方案不起作用。我贴了一个答案和我的补丁。再次感谢您抽出时间研究我的问题。需要注意的一点是,我不认为(不是100%确定)
ext
会带来
工作流步骤api
的所有可传递依赖项。