Can ComponentAccessor can be used in developing addon for Jira clould?

Hi, Community,

I’m trying to understand the capabilities of ComponentAccessor in an addon project and how to utilize its useful methods. I’ve noticed that most of the topics in the community are categorized under “Jira servers,” so I’d like to confirm if it can also be used for developing Jira cloud addons.

Additionally, I have a question regarding adding a dependency to the pom file. I encountered an “unresolved dependency: ‘com.atlassian.jira:jira-components:jar:9.9.0’” error. I attempted to add several repositories from other Repositories, but I’m still facing difficulties resolving the issue. Here’s my current pom file:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
        <relativePath></relativePath>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>11</java.version>
        <atlassian-connect-spring-boot.version>3.0.3</atlassian-connect-spring-boot.version>
    </properties>


    <groupId>com.atlassian.connect</groupId>
    <artifactId>atlassian-connect-spring-boot-sample-thymeleaf</artifactId>
    <version>2.0-SNAPSHOT</version>


    <repositories>
        <repository>
            <id>atlassian-public</id>
            <url>https://packages.atlassian.com/mvn/maven-atlassian-external</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>warn</checksumPolicy>
            </releases>
        </repository>
<!--        <repository>-->
<!--            <id>atlassian-public</id>-->
<!--            <url>https://packages.atlassian.com/maven/repository/public</url>-->
<!--            <snapshots>-->
<!--                <enabled>true</enabled>-->
<!--                <updatePolicy>never</updatePolicy>-->
<!--                <checksumPolicy>warn</checksumPolicy>-->
<!--            </snapshots>-->
<!--            <releases>-->
<!--                <enabled>true</enabled>-->
<!--                <checksumPolicy>warn</checksumPolicy>-->
<!--            </releases>-->
<!--        </repository>-->
<!--        <repository>-->
<!--            <id>adaptavist-external</id>-->
<!--            <url>https://nexus.adaptavist.com/content/repositories/external</url>-->
<!--            <snapshots>-->
<!--                <enabled>false</enabled>-->
<!--            </snapshots>-->
<!--            <releases>-->
<!--                <enabled>true</enabled>-->
<!--                <checksumPolicy>fail</checksumPolicy>-->
<!--            </releases>-->
<!--        </repository>-->
    </repositories>
    <dependencies>


        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-components</artifactId>
            <version>9.9.0</version>

<!--            <type>pom</type>-->
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.connect</groupId>
            <artifactId>atlassian-connect-spring-boot-starter</artifactId>
            <version>${atlassian-connect-spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.connect</groupId>
            <artifactId>atlassian-connect-spring-boot-jpa-starter</artifactId>
            <version>${atlassian-connect-spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>4.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
<!--            <version>1.31</version>-->
<!--            <scope>runtime</scope>-->
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

    </dependencies>

    <build>
        <defaultGoal>spring-boot:run</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>4.22.0</version>
                <configuration>
                    <propertyFile>
                        liquibase.properties
                    </propertyFile>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <property>
                    <name>!spring.profiles.active</name>
                </property>
            </activation>
            <dependencies>
<!--                <dependency>-->
<!--                    <groupId>org.hsqldb</groupId>-->
<!--                    <artifactId>hsqldb</artifactId>-->
<!--                    <scope>runtime</scope>-->
<!--                </dependency>-->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-devtools</artifactId>
                    <optional>true</optional>
                </dependency>
            </dependencies>
        </profile>
    </profiles>


</project>

Please advise on how to resolve the dependency problem and ensure compatibility with Jira cloud addons. Thank you!

Many thanks,
Roger.

Hi Roger,
jira-components is a server/data center component only. It doesn’t have the concept of multi-tenancy or communication through the jria rest api. You’ll need to create your own solution in cloud as you’re not running in the jira jvm.

Thanks,

/Daniel

2 Likes

Hi Daniel,

Thanks for your quick reply. It really helps me a lot!

Many thanks,
Roger.