使用 Maven 或 Gradle 开发应用程序

编写自己的构建脚本时,可以使用构建工具链 (例如 MavenGradle ) 来解析 Java 依赖关系。 作为 IBM CICS SDK for Java™ 的替代方法,它们可以从远程存储库或允许列示的本地存储库中检索库。

CICS® 在联机存储库 Maven Central上提供一组工件,供您解析 Java 依赖关系。 大多数 Java 集成开发环境 (IDE) 支持 Maven 和 Gradle ,并与常用自动化工具 (例如 Jenkins 和 Travis CI) 兼容。

哪些工件可用

这些工件在 Maven Central上可用:

表 1. CICS提供的 Maven Central 上的工件
组标识 工件标识 描述
com.ibm.cics com.ibm.cics.ts.bom

材料清单 (BOM) ,用于定义所有工件的版本,以确保它们处于同一 CICS TS 级别。

提示: 建议您使用 BOM 来控制其他依赖关系的版本号,并从其自己的规范中省略其版本号。

了解更多信息...

com.ibm.cics.server

CICS Java 类库 (JCICS) ,这是一个 Java 库,用于为 CICS TS 中的 Java 应用程序提供 EXEC CICS API 支持。

了解更多信息...

com.ibm.cics.server.invocation.annotations

CICS 注释,这是一个 Java 库,提供 @CICSProgram 注释以允许 CICS 程序在 Liberty JVM 服务器中调用 Java 应用程序。

了解更多信息...

com.ibm.cics.server.invocation

CICS 注释处理器,这是一个 Java 库,在编译期间用于创建元数据,使 CICS 程序能够在 Liberty JVM 服务器中调用 Java 应用程序。

了解更多信息...

如何声明依赖关系

先决条件: 在使用 Maven 或 Gradle为 CICS 开发 Java 应用程序之前,必须确保:
  • 您已经在机器或 IDE 中安装了 Maven 或 Gradle 支持。
  • 您已创建 Maven 或 Gradle 模块以包含应用程序,或者已将现有 Java 项目转换为 Maven 或 Gradle 模块。 大多数 Java IDE 都支持此功能。
有关指示信息,请参阅 设置开发环境中的 Maven 和 Gradle 相关信息。
注: 缺省情况下,并非所有 Eclipse 软件包都支持 Maven 或 Gradle 。 例如,如果使用独立的 CICS Explorer® for Aqua 3.11 或更低版本,那么不包含 Maven 或 Gradle 支持。 要使用 Maven 或 Gradle,请通过 Eclipse Marketplace 安装 m2e ( Eclipse的 Maven 集成) 插件或 Buildship Gradle Integration 插件。
您可以在 Maven 模块的 pom.xml 文件或 Gradle 模块的 build.gradle 文件中声明依赖关系。 每个工件的以下指示信息包括显示如何声明对每个工件的依赖关系的片段; 您可以根据 Maven Central上的信息修改工件坐标。 您还可以使用其他构建工具来利用 Maven Central 工件,但本主题仅关注 Maven 和 Gradle 。
注: Maven Central 上的片段是自动生成的,可能缺少 <scope>import</scope>compileOnly之类的配置。 请改为遵循本主题中的语法,以确保正确声明依赖关系。
com.ibm.cics.ts.bom
所有版本都可从 com.ibm.cics.ts.bom获取。

Maven pom.xml

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.ibm.cics</groupId>
        <artifactId>com.ibm.cics.ts.bom</artifactId>
        <version>5.4-20200519102234-PH25409</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
</dependencyManagement>

在 Maven 中, BOM 控制其他依赖关系的这些配置:

版本:

BOM 版本控制同一模块或其子模块中任何其他 CICS 依赖关系的版本 (如果未以其他方式指定该依赖关系的版本)。 确保指定的 BOM 版本为应用程序中所需的其他依赖关系提供支持,并且目标 CICS 系统处于相同或更新的 CICS TS 发行版和 APAR 维护级别。 在片段中, version 标记指定 BOM 版本,包括:
  • CICS 版本 (5.4)
  • 构建 BOM 时的时间戳记 (20200519102234)
  • (如果相关) CICS TS APAR 的版本 (PH25409) ,其中包括对库的服务器端更新

作用域:

BOM 还指定其他依赖关系具有 provided 作用域,因此您无需在这些 Maven 依赖关系中添加 <scope>provided</scope> 。 指定此作用域时,依赖关系将由最终运行时提供,并且不得打包为模块的一部分。 它不仅减少了应用程序大小,还避免了由于使用的版本不一致或从多个类装入器装入类而导致的难以诊断的问题。

如果不使用 BOM ,那么在 Maven 中声明这些依赖关系时必须指定 <scope>provided</scope>

Gradle build.gradle

repositories {
     mavenCentral()
}

dependencies {
    compileOnly enforcedPlatform('com.ibm.cics:com.ibm.cics.ts.bom:5.4-20200519102234-PH25409')
}

在 Gradle中, BOM 还控制其他依赖关系的以下配置:

版本:

BOM 版本控制同一模块或其子模块中任何其他 CICS 依赖关系的版本 (如果未以其他方式指定该依赖关系的版本)。 确保指定的 BOM 版本为应用程序中所需的其他依赖关系提供支持,并且目标 CICS 系统处于相同或更新的 CICS TS 发行版和 APAR 维护级别。 在片段中, version 标记指定 BOM 版本,包括:
  • CICS 版本 (5.4)
  • 构建 BOM 时的时间戳记 (20200519102234)
  • (如果相关) CICS TS APAR 的版本 (PH25409) ,其中包括对库的服务器端更新
enforcedPlatform 关键字确保 BOM 中指定的版本覆盖依赖关系图中找到的任何其他版本。
注: Gradle 5.0支持 enforcedPlatform

作用域:

与 Maven 中的 provided 作用域类似, Gradle 具有 compileOnly 配置,以确保依赖关系由 CICS TS 运行时提供,而不是与模块打包在一起。 但是,您必须为 BOM 和其他依赖关系指定一致的目标配置。 例如,声明对具有 compileOnly 配置的 BOM 的 JCICS 库 (com.ibm.cics.server) 的依赖关系,如下所示:
dependencies {
    compileOnly enforcedPlatform('com.ibm.cics:com.ibm.cics.ts.bom:5.4-20200519102234-PH25409')
    compileOnly("com.ibm.cics:com.ibm.cics.server")  //dependency on JCICS
}
同样,如果您声明对注释处理器 (com.ibm.cics.server.invocation) 的依赖关系,那么还应该使用 annotationProcessor 配置来定义 BOM。 这是因为注释处理器依赖关系必须使用 annotationProcessor 配置。

Gradle build.gradle

dependencies {
    annotationProcessor enforcedPlatform('com.ibm.cics:com.ibm.cics.ts.bom:5.4-20200519102234-PH25409')
    annotationProcessor ("com.ibm.cics:com.ibm.cics.server.invocation")  //dependency on annotation processor
}
注: 您声明对 BOM 文件的依赖关系以进行版本控制。 BOM 本身不会导入任何库; 您还必须随 BOM 一起引用其他库。
com.ibm.cics.server
在 Maven Central 上的 com.ibm.cics.server 上提供了所有版本。

Maven pom.xml

<dependencies>
    <dependency>
        <groupId>com.ibm.cics</groupId>
        <artifactId>com.ibm.cics.server</artifactId>
    </dependency>
</dependencies>
当从 BOM 继承版本号和作用域配置时,将省略这些版本号和作用域配置。 如果不使用 BOM ,请按如下所示引用此库,其中 版本号包括 OSGi Bundle-Version, CICS 发行版以及 (如果相关) APAR 编号。
<dependencies>
    <dependency>
        <groupId>com.ibm.cics</groupId>
        <artifactId>com.ibm.cics.server</artifactId>
        <version>1.700.1-5.4-PH25409</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Gradle build.gradle

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'com.ibm.cics:com.ibm.cics.server'
}
将省略版本号,因为它们是从 BOM 继承而来的。 如果不使用 BOM ,请按如下所示引用此库,其中 版本号包括 OSGi Bundle-Version, CICS 发行版以及 (如果相关) APAR 编号。
repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'com.ibm.cics:com.ibm.cics.server:1.700.1-5.4-PH25409'
}
com.ibm.cics.server.invocation.annotations
在 Maven Central 上的 com.ibm.cics.server.invocation.annotations 中提供了所有版本。

Maven pom.xml

<dependencies>
    <dependency>
        <groupId>com.ibm.cics</groupId>
        <artifactId>com.ibm.cics.server.invocation.annotations</artifactId>
    </dependency>
</dependencies>

将省略版本号和作用域配置,因为它们是从 BOM 继承而来的。 如果不使用 BOM ,请同时指定此依赖关系的版本号和 <scope>provided</scope>

版本号包括 CICS 发行版和 (如果相关) CICS TS APAR 号。

Gradle build.gradle

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'com.ibm.cics:com.ibm.cics.server.invocation.annotations'
}

将省略版本号,因为它是从 BOM 继承而来的。 如果不使用 BOM ,请同时指定此依赖关系的版本号。

版本号包括 CICS 发行版和 (如果相关) CICS TS APAR 号。
com.ibm.cics.server.invocation
在 Maven Central 上的 com.ibm.cics.server.invocation 中提供了所有版本。

建议将单独的处理器路径用于注释处理器,而不是将它们直接添加到类路径。 因此, com.ibm.cics.server.invocation 的配置与其他工件不同。

Maven pom.xml

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <annotationProcessorPaths>
                    <annotationProcessorPath>
                        <groupId>com.ibm.cics</groupId>
                        <artifactId>com.ibm.cics.server.invocation</artifactId>
                        <version>5.4-PH25409</version>
                    </annotationProcessorPath>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>
注: Maven 如果使用 Maven ,那么即使使用 BOM ,也需要指定工件的版本号。 版本号包括 CICS 发行版和 (如果相关) CICS TS APAR 号。

Gradle build.gradle

repositories {
    mavenCentral()
}

dependencies {
    annotationProcessor 'com.ibm.cics:com.ibm.cics.server.invocation'
}
将省略版本号,因为它是从 BOM 继承而来的。 确保使用相同的 annotationProcessor 配置定义 BOM。 如果不使用 BOM ,请为此依赖关系指定版本号。 版本号包括 CICS 发行版和 (如果相关) CICS TS APAR 号。

下一步

编写代码时,可以引用 JCICS Javadoc 信息 。 完成编写应用程序代码后,可以构建应用程序并将其集成到构建工具链中,就像构建和部署其他 Maven 或 Gradle 模块一样。

1 Aqua 代表 z/OS Explorer for Aqua。