Skip to content

Commit 5a7f1a4

Browse files
authored
refactoring/separate_deployable_pom (#460)
* Attempt to distinguish between deployable and non-deployable parts with two parent POMs. * Fixed review findings and added developer documentation. * Updated release date.
1 parent 8883f4f commit 5a7f1a4

File tree

19 files changed

+173
-77
lines changed

19 files changed

+173
-77
lines changed

api/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-api</artifactId>
66
<name>OpenFastTrace API</name>
77
<parent>
8-
<relativePath>../parent/pom.xml</relativePath>
8+
<relativePath>../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

core/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-core</artifactId>
66
<name>OpenFastTrace Core</name>
77
<parent>
8-
<relativePath>../parent/pom.xml</relativePath>
8+
<relativePath>../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

doc/changes/changes_4.2.0.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# OpenFastTrace 4.2.0, released 2025-06-13
1+
# OpenFastTrace 4.2.0, released 2025-06-14
22

33
Code name: Markdown code blocks
44

doc/developer_guide.md

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ dependencies {
3333

3434
## Build Time Dependencies
3535

36-
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.
36+
The list below shows all build time dependencies in alphabetical order. Note that except the Maven build tool, Maven downloads all required modules automatically.
3737

3838
| Dependency | Purpose | License |
39-
| ---------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------- |
39+
|------------------------------------------------------------------------------------|--------------------------------------------------------|-------------------------------|
4040
| [Apache Maven](https://maven.apache.org/) | Build tool | Apache License 2.0 |
4141
| [Equals Verifier](https://github.com/jqno/equalsverifier) | Automatic contract checker for `equals()` and `hash()` | Apache License 2.0 |
4242
| [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
4646

4747
## Preparations
4848

49-
OpenFastTrace uses [Apache Maven](https://maven.apache.org) as technical project management tool that resolves and downloads the build-dependencies before building the packages.
49+
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.
5050

5151
### Installation of Initial Build Dependencies on Linux
5252

@@ -126,7 +126,7 @@ To build and test with a later version, add argument `-Djava.version=17` to the
126126

127127
By default, Maven builds the OFT modules sequentially.
128128

129-
To speedup the build and build modules in parallel, add argument `-T 1C` to the Maven command.
129+
To speed up the build and build modules in parallel, add argument `-T 1C` to the Maven command.
130130

131131
### Run Requirements Tracing
132132

@@ -140,7 +140,7 @@ Import as a Maven project using *"File" &rarr; "Import..." &rarr; "Maven" &rarr;
140140

141141
## Configure the `itsallcode style` formatter
142142

143-
All sub-projects come with formatter and save actions configuration for Eclipse.
143+
All subprojects come with formatter and save actions configuration for Eclipse.
144144

145145
If you use a different IDE like IntelliJ, please import the formatter configuration [itsallcode_formatter.xml](itsallcode_formatter.xml).
146146

@@ -183,7 +183,7 @@ This project is configured to produce exactly the same artifacts each time when
183183
```bash
184184
mvn initialize artifact:check-buildplan
185185
```
186-
* Verify that the build produces excatly the same artifacts:
186+
* Verify that the build produces exactly the same artifacts:
187187
```bash
188188
mvn -T 1C clean install -DskipTests
189189
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
199199

200200
1. Checkout the `main` branch.
201201
2. Create a new "prepare-release" branch.
202-
3. Update version in
202+
3. Update the version in
203203
* `openfasttrace-parent/pom.xml` (`revision` property)
204204
* `README.md`
205205
* `doc/developer_guide.md`
206-
4. Add changes in new version to `doc/changes/changes.md` and `doc/changes/changes_$VERSION.md` and update the release date.
206+
4. Add changes in a new version to `doc/changes/changes.md` and `doc/changes/changes_$VERSION.md` and update the release date.
207207
5. Commit and push changes.
208208
6. Create a new pull request, have it reviewed and merged to `main`.
209209

210210
### Perform the Release
211211

212212
1. Start the release workflow
213-
* Run command `gh workflow run release.yml --repo itsallcode/openfasttrace --ref main`
214-
* or go to [GitHub Actions](https://github.com/itsallcode/openfasttrace/actions/workflows/release.yml) and start the `release.yml` workflow on branch `main`.
215-
2. Update title and description of the newly created [GitHub release](https://github.com/itsallcode/openfasttrace/releases).
213+
* Run command `gh workflow run release.yml --repo itsallcode/openfasttrace --ref main`
214+
* or go to [GitHub Actions](https://github.com/itsallcode/openfasttrace/actions/workflows/release.yml) and start the `release.yml` workflow on branch `main`.
215+
2. Update the title and description of the newly created [GitHub release](https://github.com/itsallcode/openfasttrace/releases).
216216
3. After some time the release will be available at [Maven Central](https://repo1.maven.org/maven2/org/itsallcode/openfasttrace/openfasttrace/).
217+
218+
## Module Overview
219+
220+
This section explains the module structure of OpenFastTrace.
221+
222+
| Module | Deployed to MC | Content |
223+
|--------------------------------------------|----------------|----------------------------------------------------------|
224+
| **Core Modules** | | |
225+
| `openfasttrace-api` || Core API interfaces and contracts for the tracing system |
226+
| `openfasttrace-core` || Main implementation of tracing logic and algorithms |
227+
| `openfasttrace-testutil` || Test utilities and helpers (internal development only) |
228+
| **Exporters** | | |
229+
| `openfasttrace-exporter-common` || Common utilities and base classes for exporters |
230+
| `openfasttrace-exporter-specobject` || Exporter for SpecObject format |
231+
| **Importers** | | |
232+
| `openfasttrace-importer-lightweightmarkup` || Base classes for lightweight markup importers |
233+
| `openfasttrace-importer-markdown` || Importer for Markdown documents with requirement tags |
234+
| `openfasttrace-importer-restructuredtext` || Importer for reStructuredText documents |
235+
| `openfasttrace-importer-specobject` || Importer for SpecObject XML format |
236+
| `openfasttrace-importer-tag` || Importer for tagged source code comments |
237+
| `openfasttrace-importer-xmlparser` || Common XML parsing utilities for importers |
238+
| `openfasttrace-importer-zip` || Importer for ZIP archives containing requirements |
239+
| **Reporters** | | |
240+
| `openfasttrace-reporter-plaintext` || Plain text report generator |
241+
| `openfasttrace-reporter-html` || HTML report generator with interactive features |
242+
| `openfasttrace-reporter-aspec` || ASpec format reporter for augmented specifications |
243+
| **Product** | | |
244+
| `openfasttrace` (product) || Complete application bundle with all modules (uber-JAR) |
245+
| **Infrastructure** | | |
246+
| `openfasttrace-parent` || Base parent POM (build infrastructure) |
247+
| `openfasttrace-mc-deployable-parent` || Deployment parent POM (build infrastructure) |
248+
| `openfasttrace` (root) || Root aggregator POM (build infrastructure) |
249+
250+
Legend:
251+
252+
✅ Deployed to Maven Central: Public API modules that external users can depend on
253+
254+
❌ Not Deployed: Internal infrastructure, test utilities, and build configuration
255+
256+
### Why Two Parent POMs?
257+
258+
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.
259+
260+
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.
261+
262+
This structure ensures that only user-facing components are published to Maven Central while keeping internal development tools and build infrastructure private.

exporter/common/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-exporter-common</artifactId>
66
<name>OpenFastTrace Exporters Utils</name>
77
<parent>
8-
<relativePath>../../parent/pom.xml</relativePath>
8+
<relativePath>../../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

exporter/specobject/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-exporter-specobject</artifactId>
66
<name>OpenFastTrace Specobject Exporter</name>
77
<parent>
8-
<relativePath>../../parent/pom.xml</relativePath>
8+
<relativePath>../../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

importer/lightweightmarkup/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-importer-lightweightmarkup</artifactId>
66
<name>OpenFastTrace Lightweight Markup Importer Base</name>
77
<parent>
8-
<relativePath>../../parent/pom.xml</relativePath>
8+
<relativePath>../../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

importer/markdown/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-importer-markdown</artifactId>
66
<name>OpenFastTrace Markdown Importer</name>
77
<parent>
8-
<relativePath>../../parent/pom.xml</relativePath>
8+
<relativePath>../../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

importer/restructuredtext/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-importer-restructuredtext</artifactId>
66
<name>OpenFastTrace reStructuredText Importer</name>
77
<parent>
8-
<relativePath>../../parent/pom.xml</relativePath>
8+
<relativePath>../../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

importer/specobject/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<artifactId>openfasttrace-importer-specobject</artifactId>
66
<name>OpenFastTrace Specobject Importer</name>
77
<parent>
8-
<relativePath>../../parent/pom.xml</relativePath>
8+
<relativePath>../../openfasttrace-mc-deployable-parent/pom.xml</relativePath>
99
<groupId>org.itsallcode.openfasttrace</groupId>
10-
<artifactId>openfasttrace-parent</artifactId>
10+
<artifactId>openfasttrace-mc-deployable-parent</artifactId>
1111
<version>${revision}</version>
1212
</parent>
1313
<properties>

0 commit comments

Comments
 (0)