jira8.0 api变化--含解决方法
其中跟开发相关的有一下几点:
- 结束对PostgreSQL 9.3的支持
- 结束对MySQL 5.5的支持
- 结束对com.atlassian.fugue的支持(Jira Service Desk)。目前的影响是globalPermissionManager.getGlobalPermission的返回值option的路径变了,jira8以前的路径是:com.atlassian.fugue.Option.Jira8的路径是io.atlassian.fugue.Option
- ContainerProvider SPI移除。(com.atlassian.jira.component.pico.extension.ContainerProvider )
- ComponentManager已移动
工件中的
ComponentManager
类jira-core
已从com.atlassian.jira
包移动 到com.atlassian.jira.component.pico
包,以改进包结构。使用jira-api的ComponentAccessor
。- 插件一般不应完全取决于
jira-core
Maven工件中的任何内容,因为它是非API的,因此Jira团队可能会更改,恕不另行通知。
- 使用utf8mb4支持MySQL
- jQuery升级。jQuery从1.7.2升级到2.2.4
- 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,相当于一个泛型,在编译时才会寻找变量类型,不需要显示导入包了 | 链式调用,去除中间环节,注意:需要处理空指针 |