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.
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.
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. |
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"
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"
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
- Check your
- Second, if you are having trouble building with the IDE, try via
mvn
command line instead
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/.
The generated project will have Apache 2.0 pre-configured because this is the default for us. Change it as needed.