diff --git a/api/pom.xml b/api/pom.xml index 8bf308a8..36c5499e 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,9 +5,9 @@ openfasttrace-api OpenFastTrace API - ../parent/pom.xml + ../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/core/pom.xml b/core/pom.xml index 50b48b83..fe721aa6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,9 +5,9 @@ openfasttrace-core OpenFastTrace Core - ../parent/pom.xml + ../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/doc/changes/changes_4.2.0.md b/doc/changes/changes_4.2.0.md index ba0b8bac..15b0b9a1 100644 --- a/doc/changes/changes_4.2.0.md +++ b/doc/changes/changes_4.2.0.md @@ -1,4 +1,4 @@ -# OpenFastTrace 4.2.0, released 2025-06-13 +# OpenFastTrace 4.2.0, released 2025-06-14 Code name: Markdown code blocks diff --git a/doc/developer_guide.md b/doc/developer_guide.md index 90adc09e..b1c72bdc 100644 --- a/doc/developer_guide.md +++ b/doc/developer_guide.md @@ -33,10 +33,10 @@ dependencies { ## Build Time Dependencies -The list below shows all build time dependencies in alphabetical order. Note that except the Maven build tool all required modules are downloaded automatically by Maven. +The list below shows all build time dependencies in alphabetical order. Note that except the Maven build tool, Maven downloads all required modules automatically. | Dependency | Purpose | License | -| ---------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------- | +|------------------------------------------------------------------------------------|--------------------------------------------------------|-------------------------------| | [Apache Maven](https://maven.apache.org/) | Build tool | Apache License 2.0 | | [Equals Verifier](https://github.com/jqno/equalsverifier) | Automatic contract checker for `equals()` and `hash()` | Apache License 2.0 | | [Hamcrest Auto Matcher](https://github.com/itsallcode/hamcrest-auto-matcher) | Speed-up for building Hamcrest matchers | GNU General Public License V3 | @@ -46,7 +46,7 @@ The list below shows all build time dependencies in alphabetical order. Note tha ## Preparations -OpenFastTrace uses [Apache Maven](https://maven.apache.org) as technical project management tool that resolves and downloads the build-dependencies before building the packages. +OpenFastTrace uses [Apache Maven](https://maven.apache.org) as the technical project management tool that resolves and downloads the build-dependencies before building the packages. ### Installation of Initial Build Dependencies on Linux @@ -126,7 +126,7 @@ To build and test with a later version, add argument `-Djava.version=17` to the By default, Maven builds the OFT modules sequentially. -To speedup the build and build modules in parallel, add argument `-T 1C` to the Maven command. +To speed up the build and build modules in parallel, add argument `-T 1C` to the Maven command. ### Run Requirements Tracing @@ -140,7 +140,7 @@ Import as a Maven project using *"File" → "Import..." → "Maven" → ## Configure the `itsallcode style` formatter -All sub-projects come with formatter and save actions configuration for Eclipse. +All subprojects come with formatter and save actions configuration for Eclipse. If you use a different IDE like IntelliJ, please import the formatter configuration [itsallcode_formatter.xml](itsallcode_formatter.xml). @@ -183,7 +183,7 @@ This project is configured to produce exactly the same artifacts each time when ```bash mvn initialize artifact:check-buildplan ``` -* Verify that the build produces excatly the same artifacts: +* Verify that the build produces exactly the same artifacts: ```bash mvn -T 1C clean install -DskipTests mvn -T 1C clean verify artifact:compare -DskipTests @@ -199,18 +199,64 @@ The build will use the last Git commit timestamp as timestamp for files in `.jar 1. Checkout the `main` branch. 2. Create a new "prepare-release" branch. -3. Update version in +3. Update the version in * `openfasttrace-parent/pom.xml` (`revision` property) * `README.md` * `doc/developer_guide.md` -4. Add changes in new version to `doc/changes/changes.md` and `doc/changes/changes_$VERSION.md` and update the release date. +4. Add changes in a new version to `doc/changes/changes.md` and `doc/changes/changes_$VERSION.md` and update the release date. 5. Commit and push changes. 6. Create a new pull request, have it reviewed and merged to `main`. ### Perform the Release 1. Start the release workflow - * Run command `gh workflow run release.yml --repo itsallcode/openfasttrace --ref main` - * or go to [GitHub Actions](https://github.com/itsallcode/openfasttrace/actions/workflows/release.yml) and start the `release.yml` workflow on branch `main`. -2. Update title and description of the newly created [GitHub release](https://github.com/itsallcode/openfasttrace/releases). + * Run command `gh workflow run release.yml --repo itsallcode/openfasttrace --ref main` + * or go to [GitHub Actions](https://github.com/itsallcode/openfasttrace/actions/workflows/release.yml) and start the `release.yml` workflow on branch `main`. +2. Update the title and description of the newly created [GitHub release](https://github.com/itsallcode/openfasttrace/releases). 3. After some time the release will be available at [Maven Central](https://repo1.maven.org/maven2/org/itsallcode/openfasttrace/openfasttrace/). + +## Module Overview + +This section explains the module structure of OpenFastTrace. + +| Module | Deployed to MC | Content | +|--------------------------------------------|----------------|----------------------------------------------------------| +| **Core Modules** | | | +| `openfasttrace-api` | ✅ | Core API interfaces and contracts for the tracing system | +| `openfasttrace-core` | ✅ | Main implementation of tracing logic and algorithms | +| `openfasttrace-testutil` | ❌ | Test utilities and helpers (internal development only) | +| **Exporters** | | | +| `openfasttrace-exporter-common` | ✅ | Common utilities and base classes for exporters | +| `openfasttrace-exporter-specobject` | ✅ | Exporter for SpecObject format | +| **Importers** | | | +| `openfasttrace-importer-lightweightmarkup` | ✅ | Base classes for lightweight markup importers | +| `openfasttrace-importer-markdown` | ✅ | Importer for Markdown documents with requirement tags | +| `openfasttrace-importer-restructuredtext` | ✅ | Importer for reStructuredText documents | +| `openfasttrace-importer-specobject` | ✅ | Importer for SpecObject XML format | +| `openfasttrace-importer-tag` | ✅ | Importer for tagged source code comments | +| `openfasttrace-importer-xmlparser` | ✅ | Common XML parsing utilities for importers | +| `openfasttrace-importer-zip` | ✅ | Importer for ZIP archives containing requirements | +| **Reporters** | | | +| `openfasttrace-reporter-plaintext` | ✅ | Plain text report generator | +| `openfasttrace-reporter-html` | ✅ | HTML report generator with interactive features | +| `openfasttrace-reporter-aspec` | ✅ | ASpec format reporter for augmented specifications | +| **Product** | | | +| `openfasttrace` (product) | ✅ | Complete application bundle with all modules (uber-JAR) | +| **Infrastructure** | | | +| `openfasttrace-parent` | ❌ | Base parent POM (build infrastructure) | +| `openfasttrace-mc-deployable-parent` | ❌ | Deployment parent POM (build infrastructure) | +| `openfasttrace` (root) | ❌ | Root aggregator POM (build infrastructure) | + +Legend: + +✅ Deployed to Maven Central: Public API modules that external users can depend on + +❌ Not Deployed: Internal infrastructure, test utilities, and build configuration + +### Why Two Parent POMs? + +As you can see in the table above, not all modules are intended to be deployed on Maven Central. The distinction is made by using two parent POMs. + +The base POM is `openfasttrace-parent`, it mainly contains common dependencies and build configuration. On top of that, `openfasttrace-mc-deployable-parent` adds signing and Maven central deployment. + +This structure ensures that only user-facing components are published to Maven Central while keeping internal development tools and build infrastructure private. diff --git a/exporter/common/pom.xml b/exporter/common/pom.xml index 53a32ad6..6734a700 100644 --- a/exporter/common/pom.xml +++ b/exporter/common/pom.xml @@ -5,9 +5,9 @@ openfasttrace-exporter-common OpenFastTrace Exporters Utils - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/exporter/specobject/pom.xml b/exporter/specobject/pom.xml index c55c0c7b..b3c24cc5 100644 --- a/exporter/specobject/pom.xml +++ b/exporter/specobject/pom.xml @@ -5,9 +5,9 @@ openfasttrace-exporter-specobject OpenFastTrace Specobject Exporter - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/lightweightmarkup/pom.xml b/importer/lightweightmarkup/pom.xml index fc34d080..45739b71 100644 --- a/importer/lightweightmarkup/pom.xml +++ b/importer/lightweightmarkup/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-lightweightmarkup OpenFastTrace Lightweight Markup Importer Base - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/markdown/pom.xml b/importer/markdown/pom.xml index 355886f1..3ff3260a 100644 --- a/importer/markdown/pom.xml +++ b/importer/markdown/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-markdown OpenFastTrace Markdown Importer - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/restructuredtext/pom.xml b/importer/restructuredtext/pom.xml index 8866dba1..c897bf21 100644 --- a/importer/restructuredtext/pom.xml +++ b/importer/restructuredtext/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-restructuredtext OpenFastTrace reStructuredText Importer - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/specobject/pom.xml b/importer/specobject/pom.xml index 32469bf5..113f8971 100644 --- a/importer/specobject/pom.xml +++ b/importer/specobject/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-specobject OpenFastTrace Specobject Importer - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/tag/pom.xml b/importer/tag/pom.xml index 37ce102f..390f36be 100644 --- a/importer/tag/pom.xml +++ b/importer/tag/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-tag OpenFastTrace Tag Importer - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/xmlparser/pom.xml b/importer/xmlparser/pom.xml index e1290e6c..e2d6200f 100644 --- a/importer/xmlparser/pom.xml +++ b/importer/xmlparser/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-xmlparser OpenFastTrace Common XML Parser - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/importer/zip/pom.xml b/importer/zip/pom.xml index d5b452db..0c235a82 100644 --- a/importer/zip/pom.xml +++ b/importer/zip/pom.xml @@ -5,9 +5,9 @@ openfasttrace-importer-zip OpenFastTrace Zip Importer - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/openfasttrace-mc-deployable-parent/pom.xml b/openfasttrace-mc-deployable-parent/pom.xml new file mode 100644 index 00000000..eb887381 --- /dev/null +++ b/openfasttrace-mc-deployable-parent/pom.xml @@ -0,0 +1,85 @@ + + + 4.0.0 + openfasttrace-mc-deployable-parent + ${revision} + OpenFastTrace Parent for modules deployed to Maven Central + pom + + ../parent/pom.xml + org.itsallcode.openfasttrace + openfasttrace-parent + ${revision} + + Free requirement tracking suite + https://github.com/itsallcode/openfasttrace + + + central-publishing + + + + org.sonatype.central + central-publishing-maven-plugin + 0.7.0 + true + + central + false + validated + Manual deployment of OpenFastTrace + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.7 + + + sign-artifacts + verify + + sign + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + true + + + + + + + + + central + Maven Central + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + central + Maven Central Snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots/ + + + diff --git a/parent/pom.xml b/parent/pom.xml index 71a59f42..99289099 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -239,31 +239,6 @@ - - central-publishing - - - - org.sonatype.central - central-publishing-maven-plugin - 0.7.0 - true - - central - - - - org.apache.maven.plugins - maven-gpg-plugin - - - org.apache.maven.plugins - maven-deploy-plugin - 3.1.4 - - - - java21 @@ -607,16 +582,6 @@ - - - org.apache.maven.plugins - maven-deploy-plugin - 3.1.4 - - true - - diff --git a/product/pom.xml b/product/pom.xml index 9736755b..2ead3e92 100644 --- a/product/pom.xml +++ b/product/pom.xml @@ -4,9 +4,9 @@ openfasttrace OpenFastTrace Product - ../parent/pom.xml + ../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/reporter/aspec/pom.xml b/reporter/aspec/pom.xml index 0710675c..19464e96 100644 --- a/reporter/aspec/pom.xml +++ b/reporter/aspec/pom.xml @@ -5,9 +5,9 @@ openfasttrace-reporter-aspec OpenFastTrace augmented specobject Reporter - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/reporter/html/pom.xml b/reporter/html/pom.xml index 378e75fa..0e67dd50 100644 --- a/reporter/html/pom.xml +++ b/reporter/html/pom.xml @@ -5,9 +5,9 @@ openfasttrace-reporter-html OpenFastTrace HTML Reporter - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision} diff --git a/reporter/plaintext/pom.xml b/reporter/plaintext/pom.xml index f282736a..72cf8070 100644 --- a/reporter/plaintext/pom.xml +++ b/reporter/plaintext/pom.xml @@ -5,9 +5,9 @@ openfasttrace-reporter-plaintext OpenFastTrace Plaintext Reporter - ../../parent/pom.xml + ../../openfasttrace-mc-deployable-parent/pom.xml org.itsallcode.openfasttrace - openfasttrace-parent + openfasttrace-mc-deployable-parent ${revision}