jira8.0 api变化--含解决方法

参考atlassian官方的升级到jira8.0的文档

其中跟开发相关的有一下几点:

  1. 结束对PostgreSQL 9.3的支持
  2. 结束对MySQL 5.5的支持
  3. 结束对com.atlassian.fugue的支持(Jira Service Desk)。目前的影响是globalPermissionManager.getGlobalPermission的返回值option的路径变了,jira8以前的路径是:com.atlassian.fugue.Option.Jira8的路径是io.atlassian.fugue.Option
  4. ContainerProvider SPI移除。(com.atlassian.jira.component.pico.extension.ContainerProvider )
  5. ComponentManager已移动

    工件中的  ComponentManager 类  jira-core已从com.atlassian.jira 包移动  到  com.atlassian.jira.component.pico 包,以改进包结构。

    • 使用jira-api的ComponentAccessor  。
    • 插件一般不应完全取决于  jira-core Maven工件中的任何内容,因为它是非API的,因此Jira团队可能会更改,恕不另行通知。
  6. 使用utf8mb4支持MySQL
  7. jQuery升级。jQuery从1.7.2升级到2.2.4
  8. Apache Tomcat升级。Tomcat升级到版本8.5.32,升级到Jira 8.0时可能需要进行一些更改。

 

项目中不兼容的实例

1.com.atlassian.plugin.Plugin#isEnabled

原因:方法弃用

状态:已修复

解决方案:改用#getPluginState

示例:

 

总结:ira的api版本变化不会一个版本直接把上个版本弃用的代码直接删除,而是用@deprecated声明,在未来的某个版本中再弃用。

所以,我们在调用api的时候,要避免使用已经弃用的方法.

2.com.atlassian.jira.issue.search.SearchResults#getIssues

场景:

状态:暂无解决方案 

状态:已解决

原因:api变动

jira7
jira8
分析

jira8对SearchResults进行了改造,增加泛型的支持,SearchResults不仅仅是用来存放Issue的查询结果,还可以查询其他类型,所以去除了#getIssues方法,用#getResults方法替代。

但是升级没考虑兼容性,之前的方法不应该删除,或者新建一个类来实现通用的查询。

解决方案:

兼容类
使用

 

3.Required:com.atlassian.fugue.Option; Found:io.atlassian.fugue.Option

场景:

状态:暂无解决方案

原因:jira8结束对com.atlassian.fugue的支持。#getGlobalPermission的返回值由com.atlassian.fugue.Option改为io.atlassian.fugue.Option

状态:已解决

解决方法:

方案一
方案二

通过lombok提供的val,相当于一个泛型,在编译时才会寻找变量类型,不需要显示导入包了 链式调用,去除中间环节,注意:需要处理空指针

 

 

posted @ 2020-06-02 09:45  林暗草惊风丶  阅读(1079)  评论(0编辑  收藏  举报