The Atlassian Community Forums are currently in read-only mode. We will be relaunching on a new platform on September 22 (read more here). We apologize for the extended downtime. For concerns or questions, please email communitymanagers@atlassian.com. See you on the other side, on the new Atlassian Community Forums! :)

×

Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

The downside of using com.atlassian.jira.jira-core dependency?

Harald Ratzberger
July 21, 2017

When the SDK creates a plugin, it comment the com.atlassian.jira.jira-core dependency:

<!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
<!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->
<!--
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-core</artifactId>
<version>${jira.version}</version>
<scope>provided</scope>
</dependency>
-->

Why is this normally not recommended and what are the downsides?

I want to use SelectCFType from it.

Thx

 

1 answer

1 accepted

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

2 votes
Answer accepted
Gaston Valente
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
July 23, 2017

Harald,

Getting that dependency allows your code to reference direct classes at a lower level that the recommended by using services and manager interfaces.

I think that the downside is related to the grade of coupling your code will had with atlassian's api.

Sometimes, if you need to reference concrete classes, for example to inherit from them, this is required.

Just for you to know, i just try to remove this dependency in a custom mail handler i have that uses SelectCFType:

<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-core</artifactId>
<version>${jira.version}</version>
<scope>provided</scope>
</dependency>

Then i cannot use concrete classes:

Screen Shot 2017-07-23 at 22.29.33.png 

 

Harald Ratzberger
July 24, 2017

Good answer. Loose coupling always makes sense. Even if the Jira Core classes will not change very frequently. Thx