Book Image

JIRA Development Cookbook - Third Edition

By : Jobin Kuruvilla
Book Image

JIRA Development Cookbook - Third Edition

By: Jobin Kuruvilla

Overview of this book

JIRA provides issue and project tracking for software development teams to improve code quality and the speed of development. With the new version of JIRA, you can create your own JIRA plugins and customize the look and feel of your JIRA UI easier than ever. JIRA Development Cookbook , Third Edition, is a one-stop resource to master extensions and customizations in JIRA. This book starts with recipes about simplifying the plugin development process followed by recipes dedicated to the plugin framework. Then, you will move on to writing custom field plugins to create new field types or custom searchers. You will also learn how to program and customize workflows to transform JIRA into a user-friendly system. With so much data spanning different projects, issues, and so on, we will cover how to work on reports and gadgets to get customized data according to our needs. At the end of the book, you will learn how to customize JIRA by adding new tabs, menus, and web items; communicate with JIRA via the REST APIs; and work with the JIRA database.
Table of Contents (18 chapters)
JIRA Development Cookbook Third Edition
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Preface

Adding plugin modules


The plugin architecture is built around plugin modules, and JIRA exposes a number of plugin module types, each with a specific purpose. A plugin can have any number of plugin modules, either of the same type or of different types, as long as they all have a unique key. Throughout this book, we will see how we can use different plugin module types to solve different requirements.

In this recipe we will look at adding plugin modules to an existing plugin project.

Getting ready

Make sure the plugin project already exists or create a new skeleton project as explained, in the previous recipe.

How to do it...

  1. Open a command window and go to the plugin project folder, where pom.xml resides.

    Type atlas-create-jira-plugin-module and press Enter. This will show all the available plugin modules as a numbered list, as shown here:

  2. Select the number against the module that you are planning to add. For example, type 25 and press Enter if you want to add a simple web-item module to the plugin.

  3. Follow the instructions to provide the details required for the selected module. Some of the options may have default values. Some modules might also have an advanced setup. Type Y and press Enter when prompted, if you want to go to Advanced Setup. If not, type N and press Enter.

  4. Once the module is completed, type Y or N and press Enter when prompted to add another plugin module, depending on whether you want to add another module or not.

  5. Repeat the steps for every module you want to add.

  6. Wait for the BUILD SUCCESSFUL message when no more modules are to be added.

How it works...

Similar to the skeleton plugin creation, a set of directories and subdirectories are created during this process, along with a number of Java files or velocity templates required for the selected plugin module.

It also adds the plugin module definition in the atlassian-plugin.xml based on our inputs in step 4. A sample plugin descriptor, after adding the web-item module, looks like this:

<?xml version="1.0" encoding="UTF-8"?> 
<atlassian-plugin key="${atlassian.plugin.key}" name="${project.name}" plugins-version="2"> 
    <plugin-info> 
        <description>${project.description}</description> 
        <version>${project.version}</version> 
        <vendor name="${project.organization.name}"
          url="${project.organization.url}"/> 
        <param name="plugin-icon">images/pluginIcon.png</param> 
        <param name="plugin-logo">images/pluginLogo.png</param> 
    </plugin-info> 
    <!-- add our i18n resource --> 
    <resource type="i18n" name="i18n" location="demoplugin"/> 
    <!-- add our web resources --> 
    <web-resource key="demoplugin-resources" 
     name="demoplugin Web Resources"> 
        <dependency>com.atlassian.auiplugin:ajs</dependency> 
        <resource type="download" name="demoplugin.css" location="/css
          /demoplugin.css"/> 
        <resource type="download" name="demoplugin.js" location="/js
          /demoplugin.js"/> 
        <resource type="download" name="images/" location="/images"/> 
        <context>demoplugin</context> 
    </web-resource> 
    <web-item name="My Web Item" i18n-name-key="my-web-item.name" 
      key="my-web-item" section="system.user.options/personal" 
      weight="1000"> 
        <description key="my-web-item.description">The My Web Item Plugin
        </description> 
        <label key="my-web-item.label"></label> 
        <link linkId="my-web-item-link">http://www.j-tricks.com</link> 
    </web-item> 
</atlassian-plugin> 

As you can see, a web-item module is added. We will see more about the web-item module, and other modules mentioned here, in the upcoming chapters.

You can also see a resource module and a web-resource module, which are added automatically the first time a plugin module is created.

The resource module defines the i18n resource file for the plugin, and more key-value pairs will be added in to this file when more modules are added. The file has the name {plugin-artifact-name}.properties and is created under the src/main/resources{plugin-group-folder} folder. In our example, the demo.properties file is created under the src/main/resources/com/jtricks/demo folder.

A sample property file is as follows:

#put any key/value pairs here 
my.plugin.name=MyPlugin 
my-web-item.label=My Web Item 
my-web-item.name=My Web Item 
my-web-item.description=The My Web Item Plugin 

The web-resource module defines the plugin web resources, which includes a JS file, a CSS file, and an images folder that has the default plugin icon and logo images. We will learn more about these modules later in this book.