我目前正在开发一个自定义JIRA插件,而且我在将我的插件集成到JIRA项目/问题管理系统时遇到了一些麻烦。我现在只使用JIRA SDK大约4个月了,所以我不是专家。
一些注意事项:
现在,我的代码目前正在发生的是 createCustomField 方法返回null。当我运行atlas-debug命令时,我可以看到(在cmd中)由于该方法而抛出空指针异常。因此没有安装该插件。
这是我的代码:
public class PluginListener implements InitializingBean, DisposableBean {
private final IssueTypeManager issueTypeManager;
private final CustomFieldManager customFieldManager;
private final FieldScreenManager fieldScreenManager;
public PluginListener(IssueTypeManager issueTypeManager, CustomFieldManager customFieldManager, FieldScreenManager fieldScreenManager) {
this.issueTypeManager = issueTypeManager;
this.customFieldManager = customFieldManager;
this.fieldScreenManager = fieldScreenManager;
}
@Override
public void destroy() throws Exception {
// Handle plugin disabling or un-installation here
}
@Override
public void afterPropertiesSet() throws Exception {
// Handle plugin enabling or installation here
// Create issue type:
IssueType issueType = this.issueTypeManager.createIssueType("TheType", "TheDescription", "/images/icons/issuetypes/genericissue.png");
// Create custom field:
// Create a list of issue types for which the custom field needs to be available
List<GenericValue> issueTypes = new ArrayList<GenericValue>();
issueTypes.add(null);
// Create a list of project contexts for which the custom field needs to be available
List<JiraContextNode> contexts = new ArrayList<JiraContextNode>();
contexts.add(GlobalIssueContext.getInstance());
CustomFieldType fieldType = this.customFieldManager.getCustomFieldType("com.atlassian.jira.plugin.system.customfieldtypes:textfield");
CustomFieldSearcher fieldSearcher = this.customFieldManager.getCustomFieldSearcher("com.atlassian.jira.plugin.system.customfieldtypes:textsearcher");
// Add custom field
final CustomField cField = this.customFieldManager.createCustomField("FOO", "BAR", fieldType, fieldSearcher, contexts, issueTypes);
// Add field to default Screen
FieldScreen defaultScreen = fieldScreenManager.getFieldScreen(FieldScreen.DEFAULT_SCREEN_ID);
if (!defaultScreen.containsField(cField.getId())) {
FieldScreenTab firstTab = defaultScreen.getTab(0);
firstTab.addFieldScreenLayoutItem(cField.getId());
}
}
}
答案 0 :(得分:0)
正在运行atlas-debug
从JIRA冷启动中有效地安装插件;可能的问题是在JIRA完全准备好运行和处理某些类型的请求之前安装了JIRA插件(并激活了他们的OSGi包)。
要调试这个,在你的atlas-debug运行失败后,我会尝试手动导航到Toolgear-&gt;附加组件 - &gt;管理加载项并尝试重新上传你的插件.JAR(找到它) target
目录)。如果它的工作时间,它表明JIRA在初始系统启动时根本没有为你的插件做好准备,所以你需要在其他地方移动字段创建步骤。
您可以尝试onStart事件。如果这对你不起作用,最可靠的方法可能是延迟初始化,只要你能确保在用户第一次访问你的插件时执行这一步骤。