Using Groovy with JMWE

Groovy is an object-oriented programming language for the Java platform. It is a dynamic language with features similar to those of Python, Ruby, Perl, and Smalltalk. It can be used as a scripting language for the Java Platform. It is easy to learn, has smooth Java integration, vibrant and rich ecosystem and powerful features. To know more about Groovy, see the official Groovy Documentation.

Please note: JMWE for Jira Server currently supports Groovy 3

Learning Groovy

To learn more about the Groovy language:

Groovy in JMWE

Groovy in JMWE can be used either to write a Groovy expression or a Groovy template in the workflow extension configuration. 

Groovy expression results in JMWE are used in various Conditions, Validators, and Post-functions, including:




  • Target issues section of all post-functions that operate on related issues when Issues returned by a Groovy script or Issues returned by JQL search is selected under Which Issues field.

  • All post-functions with the Conditional execution/validation using a Groovy expression  section to execute a post-function conditionally

  • Comment issue  and Comment related issues  post-functions to create the body of the comment by selecting Groovy expression as the Comment type

  • Create/Clone issue(s)  post-function to

    • Calculate a project by selecting Calculated in Project

    • Calculate a parent issue key by selecting Calculated in Parent issue

    • Set fields of new issue by selecting Groovy expression as the Value type and 

    • Add a comment to the current issue by selecting Groovy expression as the Comment type

    • Multiple iterator section of the Create/Clone issue post-function

  • Display message to user post-function to input

    • Message title

    • Message body

    • Action type

  • Email Issue  post-function to

    • Write the Subject, HTML body, Text body

    • Attachments returned by a Groovy script

    • Set the Recipients from the script

    • Set email addresses from the script

    • Exclude users

  • Link issues to the current issue in

    • JQL expression

    • Filter expression

  • Scripted (Groovy) operation on issue  post-function to execute a Groovy script against an issue

  • Set field value  and Set field value of linked issues  post-functions to set a field value by selecting Groovy expression as the Value type

  • Transition current issue, Transition linked issues and Transition related issues post-functions in

    • Calculated transitions

    • Add field in transition screen with the result of a Groovy script

  • Unlink issues from the current issue  post-function to unlink issues based on the result of a Groovy condition

  • Groovy Console  of the JMWE Administration section to test/run Groovy scripts

  • Shared Groovy Scripts under JMWE administration

  • Transitions activity tab on issue view page , to show the Transitions activity tab on the issue view screen based on a Groovy condition

Writing Groovy scripts in JMWE

To learn how to write groovy scripts for JMWE, see:

Using Groovy Grapes

JMWE for Jira Server/Data Center now supports Groovy Grapes for dependency management and to import external libraries into Groovy scripts within JMWE. You can now add maven repository dependencies (and other repositories) to your classpath. See for more information.

As an example, the following script grabs the OpenCSV library from Maven Repository:

@GrabResolver(name='opencsv', root='') @Grab(group = 'com.opencsv', module = 'opencsv', version = '4.2') class Example { Object getExternalLibrary() { return Class.forName('com.opencsv.bean.CsvToBeanBuilder').getDeclaredMethods()*.name } } new Example().getExternalLibrary()

You are viewing the documentation for Jira Server / Data Center.

On this page: