It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Want to use latest gson library, but bamboo plugin defaults to atlassian-gson library

I want to use the latest gson-2.8.0 jar in my bamboo plugin, however bamboo defaults to using gson-2.2.2-atlassian-1.jar . I tried adding dependency in pom.xml to use :

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version><scope>compile</scope>
 </dependency>

But still didn't work.  Please guide on how to achieve this?

2 answers

0 votes

Hi Nikita,

What error exactly you're seeing? Is Maven being able to pull the dependency?

thanks

There is no error as such.There is change in behaviour of the gson library which allows identifying that old library is getting used by plugin.

I'm also facing this problem: https://community.atlassian.com/t5/Bamboo-questions/How-to-use-a-Gson-version-that-is-bundled-with-a-Bamboo-plugin/qaq-p/1242644

 

Currently the OSGi bundle with the custom plugin always uses the Gson implementation from Bamboo instead of the one inside the bundle itself.

To test this I had this on the plugin code:

Class klass = Gson.class;

URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");

log.warn("Gson: " + location);


Class klass2 = SerializedName.class;

URL location2 = klass2.getResource('/' + klass2.getName().replace('.', '/') + ".class");

log.warn("@SerializedName: " + location2);

And this on pom.xml:

<Import-Package>

  ...

  !com.google.gson*

</Import-Package>

<Private-Package>

  ...

  com.google.gson*

</Private-Package>

The expected result is that all code that uses classes from the Gson packages should come from the bundle itself, not the one provided by the environment (Bamboo).

But the result was:

Gson: jar:file:/opt/atlassian/bamboo/atlassian-bamboo/WEB-INF/lib/gson-2.2.2-atlassian-1.jar!/com/google/gson/Gson.class
@SerializedName: bundle://116.0:7/com/google/gson/annotations/SerializedName.class

This means, Gson class was loaded from Bamboo but the annotation SerializedName came from the bundle, which is a problem in our case because the annotation is being ignored when parsing a JSON file.

Having an import for all Gson packages from Bamboo is not an option to us because we use features that are only available after Gson 2.3.

 

Is there a way to use the Gson package that is bundled with the plugin itself?

 

Thanks.

Suggest an answer

Log in or Sign up to answer
Community showcase
Published in Bamboo

Unable to add or edit Bitbucket Cloud repository in Bamboo

On 31 May, a GDPR-related change went live in the Bitbucket Cloud API that resulted in users not being able to create or edit Bitbucket Cloud Linked repositories in Bamboo. This API update removed t...

1,409 views 2 7
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you