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}