You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jira脚本编辑器跨文件调用函数获取常量值失败求助

解决方案:Jira脚本跨文件调用Groovy类问题

问题核心分析

你的导入失败、无法获取配置值,主要原因是配置类缺少包声明,且静态方法调用方式冗余。Jira脚本环境(如ScriptRunner)依赖包结构识别类,同时静态方法无需实例化即可调用。


步骤1:修正配置类的包结构

给Configuration_CreateMultipleSubtasks.groovy添加与目录匹配的包声明,确保类能被正确识别:

package CreateMultipleSubtasks

class Configuration_CreateMultipleSubtasks {
    static def getSubTaskCreatorHashMap(){
        def map = [
            itracCreatemultiplesubtasksIssueTypesId:5, 
            itracCreatemultiplesubtasksProjectCategoriesID: [10011, 10200, 10220, 10230, 10240, 10670, 10170, 11170, 11270, 11870, 11871, 11872, 11873, 11874, 11875, 12470], 
            itracCreatemultiplesubtasksProjectCategoriesURL: "http://itrac-sustservice.eur.ad.sag:5555/web/subtaskmgr/Login.jsp?iTrac=:1:&reporter=:2:", 
            projectKey: "PIE", 
            issueTypeName: "Defect"
        ]
        return map
    }
}

步骤2:修正条件脚本的调用逻辑

删除冗余的类实例化,直接通过类名调用静态方法,同时替换硬编码值为配置类中的常量:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.plugin.ProjectPermissionKey
import com.atlassian.jira.plugin.webfragment.model.JiraHelper
import CreateMultipleSubtasks.Configuration_CreateMultipleSubtasks
import com.atlassian.jira.project.Project
import org.apache.log4j.Logger

def log = Logger.getLogger("atlassian-jira.log")

// 静态方法直接调用,无需创建类实例
def subTaskCreatorHashMap = Configuration_CreateMultipleSubtasks.getSubTaskCreatorHashMap()
String projectKey1 = subTaskCreatorHashMap["projectKey"]
String issueTypeName1 = subTaskCreatorHashMap["issueTypeName"]

// 使用配置类中的值判断,避免硬编码
def val = jiraHelper.project?.key == projectKey1 && issue.issueType.name == issueTypeName1
log.warn("MOUNA CONDITION CHECK - projectKey: ${projectKey1}, issueTypeName: ${issueTypeName1}, result: ${val}")
return val

备用方案:手动加载类(若仍存在类加载问题)

如果脚本环境仍无法识别包结构,可通过类加载器手动加载配置类:

// 替换原导入语句,手动加载类
def configClass = this.class.classLoader.loadClass("CreateMultipleSubtasks.Configuration_CreateMultipleSubtasks")
def subTaskCreatorHashMap = configClass.getSubTaskCreatorHashMap()

关键注意事项

  • 确保两个脚本文件处于同一CreateMultipleSubtasks目录下
  • Groovy对类名、方法名大小写敏感,检查拼写一致性
  • 静态方法无需实例化,直接通过类名调用即可减少资源消耗

内容的提问来源于stack exchange,提问作者منى

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:25:42