Skip to content

Extract quickfixj-codegenerator into standalone Maven plugin module#1185

Draft
Copilot wants to merge 2 commits intomasterfrom
copilot/extract-quickfixj-codegenerator-plugin
Draft

Extract quickfixj-codegenerator into standalone Maven plugin module#1185
Copilot wants to merge 2 commits intomasterfrom
copilot/extract-quickfixj-codegenerator-plugin

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 17, 2026

Extracts quickfixj-codegenerator from the quickfix-j/quickfixj multi-module build into a self-contained, independently releasable Maven plugin module at version 3.0.1-SNAPSHOT — the same pattern applied to quickfixj-class-pruner-maven-plugin in PR #1184.

quickfixj-codegenerator/pom.xml

  • Removed <parent> block; added standalone <groupId>, <version>, <licenses>, <developers>, <scm>, <issueManagement>, <prerequisites>
  • All dependency and plugin versions now explicit via self-contained <properties>
  • Added <build><pluginManagement> for compiler, source, javadoc, gpg, nexus-staging plugins
  • Added profiles: java-8-compilation (JDK ≥ 9 activates maven.compiler.release=8), release, sign
  • Added <distributionManagement> targeting GitHub Packages (snapshots) and OSSRH (releases)

New files in quickfixj-codegenerator/

  • .github/workflows/maven.yml — CI matrix: ubuntu + macOS-14 × JDK 8/11/21
  • .gitignore — standard Maven/IDE ignores
  • LICENSE — QuickFIX Software License v1.0

Root pom.xml

  • Removed <module>quickfixj-codegenerator</module>
  • Added <codegenerator-plugin.version>3.0.1-SNAPSHOT</codegenerator-plugin.version> property
  • Added pluginManagement entry pinning the plugin to ${codegenerator-plugin.version}

Downstream references

  • quickfixj-messages-all/pom.xml and quickfixj-distribution/pom.xml: codegenerator version changed from ${project.version}${codegenerator-plugin.version}
  • .github/workflows/nightly-build.yml: removed org.quickfixj.quickfixj-codegenerator from the "Delete old packages" step
Original prompt

Goal

Extract the quickfixj-codegenerator Maven plugin from the quickfix-j/quickfixj multi-module build into a standalone, self-contained module — exactly the same pattern as was done for quickfixj-class-pruner-maven-plugin in PR #1184.

The standalone version should be 3.0.1-SNAPSHOT.


Changes required

1. Transform quickfixj-codegenerator/pom.xml into a standalone POM

Remove the <parent> block and make it a fully self-contained POM:

  • Add <groupId>org.quickfixj</groupId>
  • Add <version>3.0.1-SNAPSHOT</version>
  • Add <licenses> block (The QuickFIX Software License, Version 1.0, http://www.quickfixj.org/documentation/license.html)
  • Add <developers> block: id=chrjohn, name=Christoph John
  • Add <scm> block pointing to https://github.com/quickfix-j/quickfixj-codegenerator
  • Add <issueManagement> block pointing to https://github.com/quickfix-j/quickfixj-codegenerator/issues
  • Add <prerequisites><maven>3.9.12</maven></prerequisites>
  • In <properties>, add all version properties explicitly (don't rely on parent):
    • project.build.sourceEncoding = UTF-8
    • project.reporting.outputEncoding = UTF-8
    • maven.compiler.source = 8
    • maven.compiler.target = 8
    • maven-libs-version = 3.9.12
    • maven-plugin-api-version = 3.9.14
    • maven-plugin-annotations.version = 3.15.2
    • junit.jupiter.version = 5.14.3
    • commons-io.version = 2.21.0
    • maven-surefire-plugin-version = 3.5.5
    • maven-compiler-plugin-version = 3.15.0
    • maven-source-plugin-version = 3.4.0
    • maven-javadoc-plugin-version = 3.12.0
    • maven-gpg-plugin-version = 3.2.8
    • nexus-staging-maven-plugin-version = 1.7.0
  • In all <dependency> entries that used to inherit versions from parent, add explicit <version> tags using the above properties
  • Add a <build><pluginManagement> section that defines explicit versions for: maven-compiler-plugin (with <forceLegacyJavacApi>true</forceLegacyJavacApi>), maven-source-plugin (with attach-sources execution), maven-javadoc-plugin (with attach-javadocs execution, <quiet>true</quiet><doclint>none</doclint>), maven-gpg-plugin (with sign-artifacts execution), nexus-staging-maven-plugin (with ossrh configuration)
  • Keep the existing build plugins (maven-jar-plugin, maven-source-plugin, maven-pmd-plugin, maven-plugin-plugin) but add explicit versions for maven-surefire-plugin
  • Add a <profiles> section with:
    • java-8-compilation profile (activated on JDK >= 9, sets maven.compiler.release=8)
    • release profile (activates maven-source-plugin, maven-javadoc-plugin, nexus-staging-maven-plugin)
    • sign profile (activates maven-gpg-plugin)
  • Add <distributionManagement>:
    • <snapshotRepository> id=github, url=https://maven.pkg.github.com/quickfix-j/quickfixj-codegenerator
    • <repository> id=ossrh, url=https://oss.sonatype.org/service/local/staging/deploy/maven2/

2. Add quickfixj-codegenerator/.github/workflows/maven.yml

Create this file:

name: Java CI

on:
  workflow_dispatch:
  push:
  pull_request:
    types: [reopened, opened, synchronize]

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macOS-14]
        java: [8, 11, 21]
      fail-fast: false
      max-parallel: 4
    name: Test JDK ${{ matrix.java }}, ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'corretto'
          java-version: ${{ matrix.java }}
          cache: 'maven'
      - name: Test with Maven
        run: mvn install -B -V -D"maven.javadoc.skip"="true"

3. Add quickfixj-codegenerator/.gitignore

Create this file:

# ignore maven build directories
target/
# ignore maven wrapper jar that gets built locally
.mvn/wrapper/maven-wrapper.jar
# ignore Eclipse configuration files
.project
.classpath
.settings
# ignore IntelliJ configuration files
.idea/
*.iml
*.ipr
*.iws
# ignore NetBeans configuration
nb-configuration.xml
*.bak
# ignore vim swap files
*.swp

4. Add quickfixj-codegenerator/LICENSE

Copy the existing LICENSE text used in the class-pruner plugin (The QuickFIX Software License, Version 1.0).

5. Update root pom.xml

  • Remove the module entry <module>quickfixj-codegenerator</module> from the <modules> section
  • Add property <codegenerator-plugin.version>3.0.1-SNAPSHOT</codegenerator-plugin.version> to the <properties> section
  • Add a <plugin> entry in <build><pluginManagement><plugins> for the codegenerator:
    <plugin>
        <groupId>org.quickfixj</groupId>
        <artifactId>quickfixj-codegenerator</artifactId>
        <version>${codegenerator-plugin.version}</version>
    </plugin>

6. Update quickfixj-messages/quickfixj-messages-all/pom.xml

Change the codegenerator plugin version from ${project.version} to ${codegenerator-plugin.version}:

<plugin>
    <groupI...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

*This pull request was created from Copilot chat.*
>

…version 3.0.1-SNAPSHOT

Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/85fd221c-3dd7-4c8b-8a04-abdde5552693

Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Copilot AI changed the title [WIP] Extract quickfixj-codegenerator Maven plugin into standalone module Extract quickfixj-codegenerator into standalone Maven plugin module Apr 17, 2026
Copilot AI requested a review from chrjohn April 17, 2026 09:38
@chrjohn chrjohn closed this Apr 17, 2026
@chrjohn chrjohn reopened this Apr 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants