Skip to content

linked-planet/atlassian-plugin-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maven Archetype: Atlassian Plugin Kotlin

Maven Maven GitHub License

Creates a Jira or Confluence plugin to be implemented with the Kotlin programming language.

Also provides the ability to create SPA frontend modules using KotlinJS / React via JetBrains KotlinJS Wrappers, utilizing Atlaskit UI Widgets.

Usage

Use install-latest-tag.sh to install the latest available tag on your local machine.
Once done, you can create new plugin projects using the commands documented below.

Required Properties

name description
atlassianApp confluence, jira, jira-insight
atlassianAppVersion Version of Jira / Confluence to be used
groupId Maven Group ID
artifactId Maven Artifact ID
package Name of the Java package the plugin source code will reside in
nameHumanReadable Name of the project to be shown to users
description A short description of the plugin
organizationNameHumanReadable Name of the author organization
organizationUrl URL of the author organization
inceptionYear Year of inception
generateGithubActions Whether to generate a GitHub workflow
generateDockerEnvironment Whether to generate a docker-compose.yml with a basic Atlassian-provided app container
generateStubs Whether to generate stubs (all archetype files in src)
generateFrontend Whether to generate a separate React/KotlinJS frontend
frontendAppName Name of the first app to generate, lower camel case
frontendAppNameUpperCamelCase Name of the first app to generate, upper camel case
frontendAppNameKebabCase Name of the first app to generate, kebab case
httpPort The HTTP port Jira or Confluence shall bind to. Attention: Use 2990 for Jira and 1990 for Confluence when running locally! Otherwise, the frontend dev server integration won't work. This config only exists so it can be overridden during integration tests of the archetype itself.

Jira Example

mvn archetype:generate -B \
    "-DarchetypeGroupId=com.linked-planet.maven.archetype" \
    "-DarchetypeArtifactId=atlassian-plugin-kotlin" \
    "-DarchetypeVersion=<VERSION-OF-ARCHETYPE>" \
    "-DatlassianApp=jira" \
    "-DatlassianAppVersion=8.20.13" \
    "-DgroupId=com.linked-planet.plugin.jira" \
    "-DartifactId=new-plugin" \
    "-Dpackage=com.linkedplanet.plugin.jira.newplugin" \
    "-DnameHumanReadable=New Plugin" \
    "-Ddescription=Description of New Plugin" \
    "-DorganizationNameHumanReadable=linked-planet GmbH" \
    "-DorganizationUrl=https://linked-planet.com" \
    "-DinceptionYear=2022" \
    "-DgenerateGithubActions=true" \
    "-DgenerateDockerEnvironment=true" \
    "-DgenerateStubs=true" \
    "-DgenerateFrontend=true" \
    "-DfrontendAppName=exampleApp" \
    "-DfrontendAppNameUpperCamelCase=ExampleApp" \
    "-DfrontendAppNameKebabCase=example-app" \
    "-DhttpPort=2990" \
    "-Dgoals=license:update-file-header"

Confluence Example

mvn archetype:generate -B \
    "-DarchetypeGroupId=com.linked-planet.maven.archetype" \
    "-DarchetypeArtifactId=atlassian-plugin-kotlin" \
    "-DarchetypeVersion=<VERSION-OF-ARCHETYPE>" \
    "-DatlassianApp=confluence" \
    "-DatlassianAppVersion=7.13.8" \
    "-DgroupId=com.linked-planet.plugin.confluence" \
    "-DartifactId=new-plugin" \
    "-Dpackage=com.linkedplanet.plugin.confluence.newplugin" \
    "-DnameHumanReadable=New Plugin" \
    "-Ddescription=Description of New Plugin" \
    "-DorganizationNameHumanReadable=linked-planet GmbH" \
    "-DorganizationUrl=https://linked-planet.com" \
    "-DinceptionYear=2022" \
    "-DgenerateGithubActions=true" \
    "-DgenerateDockerEnvironment=true" \
    "-DgenerateStubs=true" \
    "-DgenerateFrontend=true" \
    "-DfrontendAppName=exampleApp" \
    "-DfrontendAppNameUpperCamelCase=ExampleApp" \
    "-DfrontendAppNameKebabCase=example-app" \
    "-DhttpPort=1990" \
    "-Dgoals=license:update-file-header"

Troubleshooting

Note that we start actual Jira / Confluence instances during GitHub CI, also verifying that the React UI is integrated properly via a Selenium test.

  • First, make sure you are building your plugin with Java 8 JDK!
    • Check your JAVA_HOME environment variable
  • Second, if you are having trouble building with the IDE, try via mvn command line instead

License

Template license

Written 2019-2022 by linked-planet GmbH.

To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this template to the public domain worldwide. This template is distributed without any warranty. See http://creativecommons.org/publicdomain/zero/1.0/.

Generated project license

The generated project will have Apache 2.0 pre-configured because this is the default for us. Change it as needed.