If you’re a member of our design partnership as part of the Z design forum, you’ll know we’re hard at work on improvements for CICS TS application developers. The first thing that’s come out of that initiative is our brand new Maven plug-in, designed to stream-line the process of authoring CICS bundles for Java applications.

We’ve just cut our first release of the plug-in, which you can find on Maven central:

<plugin>
  <groupId>com.ibm.cics</groupId>
  <artifactId>cics-bundle-maven-plugin</artifactId>
  <version>0.0.1</version>
</plugin>

 

You’ll find the source for the plug-in in our GitHub repo. We chose to release this as an open source project as we think it’s an area with a lot of potential for collaboration. If there’s anything you think is missing, we’d love to hear your requirements as new issues, or accept your contributions in a pull request. Alternatively, you’re still able to raise RFEs for enhancements to the plug-in against CICS TS, as you may be more familiar with.

With the plug-in, CICS TS Java developers can now have a single Maven build that compiles their application, and packages it into a CICS bundle. If you’re currently using Maven to build your Java apps, you can breathe a sigh of relief, as you’ll be alleviated from having to manually copy your application into a CICS bundle project after each time you build it. Creating a CICS bundle containing your application is now as simple as configuring a new Maven module in your reactor build.

<packaging>cics-bundle</packaging>

The plug-in introduces a new Maven packaging type cics-bundle, with the end result being a zip format CICS bundle. war, ear and jar (OSGi bundles) dependencies get pulled into the resulting CICS bundle, along with some generated meta-data. This should make it easier for Java developers to get started targeting CICS, as you no longer need to learn to use bespoke tooling like CICS Explorer to create your bundles.

<parent>
  <groupId>com.ibm.cics</groupId>
  <artifactId>application-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>application-bundle</artifactId>
<packaging>cics-bundle</packaging>

<dependencies>
  <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>application-war</artifactId>
    <version>${project.version}</version>
    <type>war</type>
  </dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>com.ibm.cics</groupId>
      <artifactId>cics-bundle-maven-plugin</artifactId>
      <version>0.0.1</version>
      <extensions>true</extensions>
      <configuration>
        <defaultjvmserver>JSERV</defaultjvmserver>
      </configuration>
    </plugin>
  </plugins
</build>

Bring your own tooling

You can use this workflow in a much wider range of tooling than you've been able to previously. Anything with Maven support is now capable of making CICS bundles, so that's still Eclipse/CICS Explorer, but now potentially includes things like IntelliJ and VS Code. You can also benefit from the ability to run the exact same process for authoring CICS bundles in development, and in DevOps pipelines, thanks to Maven's integration into Jenkins, Travis, or CLI toolchains. This will help to eliminate errors that can occur due to different processes in development vs automation.

Supported resources

Version 0.0.1 also supports a subset of traditional CICS resource bundle parts. You can put additional bundle parts in the src/main/resources folder, and they'll get included in the resulting CICS bundle too. In version 0.0.1, we support packageset, epadapter, epadapterset, file, library, policy, program, tcpipservice, transaction, urimap, and evbind parts. The bundle parts we're not supporting yet have additional complexities regarding code page conversion, which we're deferring in favour of getting something into your hands sooner rather than later.

Find out more...

We're still working on the plug-in documentation, but there's a README.md you can consult with some examples. For other example usage, you can also take a look at our integration tests.

We'd love to hear your feedback, so maybe consider leaving us a comment, or raising an issue on GitHub. If you're interested in the future of this initiative, consider joining the Z design forum.

Join The Discussion

Your email address will not be published. Required fields are marked *