import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.version.Version
// 配置源项目与目标项目 Key
final String sourceProjectKey = "L200A"
final String targetProjectKey = "JS"
def projectManager = ComponentAccessor.projectManager
def versionManager = ComponentAccessor.versionManager
def sourceProject = projectManager.getProjectObjByKey(sourceProjectKey)
def targetProject = projectManager.getProjectObjByKey(targetProjectKey)
assert sourceProject : "找不到源项目: ${sourceProjectKey}"
assert targetProject : "找不到目标项目: ${targetProjectKey}"
// 1. 获取源项目所有版本
Collection<Version> sourceVersions = versionManager.getVersions(sourceProject.id)
def existingNames = versionManager.getVersions(targetProject.id)*.name as Set
sourceVersions.each { version ->
// 只处理已发布版本(按需保留或删除此判断)
if (!version.released) return
if (version.name in existingNames) return // 跳过已存在
// 2. 调用原生 createVersion 写入目标项目
// 签名:createVersion(name, startDate, releaseDate, description, projectId, scheduleAfterVersion, released)
versionManager.createVersion(
version.name,
version.startDate,
version.releaseDate,
version.description,
targetProject.id,
null, // scheduleAfterVersion: 无需排序则传 null
version.released
)
}
Overview
Content Tools