build: replace qqq.version override with opt-in qqq-snapshot profile

Plan B1 step 3 asks for a qqq-snapshot profile. It imports
qqq-bom-pom:${qqq.snapshot.version} (default 4.1.0-SNAPSHOT) ahead of the
parent's BOM and adds the Central snapshots repository. The old
qqq-version-override profile turned on only when -Dqqq.version was set, so
-Pqqq-snapshot did nothing and the build quietly stayed on qqq 4.0.0.
README.md and CLAUDE.md now describe the new profile.

Part of QRun-IO/qqq-all#1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
james.maesandClaude Opus 5.5 committed 2026-09-25 20:14:31 -05:00
1 parent cf3bbcb8cf
commit 4e1fe03349
3 files changed
+27 -16

No files matched your search

+2 -2
View File
@@ -14,7 +14,7 @@ mvn test # Run unit tests
mvn test -Dtest=ClassName # Run single test class
mvn package # Build JAR
mvn verify # Full verify, including integration tests
mvn verify -Dqqq.version=4.1.0-SNAPSHOT # Verify against another qqq version
mvn verify -Pqqq-snapshot # Verify against 4.1.0-SNAPSHOT (override with -Dqqq.snapshot.version)
```
Integration tests (require Docker) run via `mvn verify` using maven-failsafe-plugin.
@@ -71,7 +71,7 @@ Integration tests use `@ExtendWith(RequiresDockerCondition.class)`: skipped with
## Dependencies
- Java 21
- Parent `com.kingsrook:qbit-build-parent:2.0.0`, the only source of the qqq version (QQQ 4.0.0); do not re-import `qqq-bom-pom` here (ADR-0007), except in the opt-in `qqq-version-override` profile that `-Dqqq.version` activates
- Parent `com.kingsrook:qbit-build-parent:2.0.0`, the only source of the qqq version (QQQ 4.0.0); do not re-import `qqq-bom-pom` here (ADR-0007), except in the opt-in `qqq-snapshot` profile (`-Pqqq-snapshot`), which imports `qqq-bom-pom:${qqq.snapshot.version}` (default 4.1.0-SNAPSHOT) and adds the Central snapshots repository
- OpenSearch Java Client 2.10.0
- Apache HttpClient5 and jackson-datatype-jsr310, versions managed by the qqq BOM (keep them unpinned so they match its httpcore5 and jackson)
- JUnit 5 + AssertJ + Mockito for testing
+5 -4
View File
@@ -346,12 +346,13 @@ Index `wmsItem` and `wmsLocation` for warehouse item and location search.
mvn test # Run unit tests
mvn verify # Run unit tests + integration tests (requires Docker)
mvn test -Dtest=ClassName # Run single test class
mvn verify -Dqqq.version=4.1.0-SNAPSHOT # Verify against another qqq version
mvn verify -Pqqq-snapshot # Verify against the next qqq line (4.1.0-SNAPSHOT)
```
The qqq version comes from `qbit-build-parent`. Setting `qqq.version` activates
the `qqq-version-override` profile, which imports that version of `qqq-bom-pom`
instead.
The qqq version comes from `qbit-build-parent`. The opt-in `qqq-snapshot`
profile imports `qqq-bom-pom` at `${qqq.snapshot.version}` (default
`4.1.0-SNAPSHOT`) ahead of the parent's BOM and adds the Central snapshots
repository. Pick another version with `-Dqqq.snapshot.version=...`.
Without Docker, integration tests are skipped locally. With `CI=true`, they fail
instead, so a CI build cannot pass with its integration tests silently skipped.
+20 -10
View File
@@ -219,27 +219,37 @@
</build>
<profiles>
<!-- The qqq version comes only from qbit-build-parent (ADR-0007). This -->
<!-- profile exists solely to verify against another qqq line, and is only -->
<!-- active when invoked with e.g. -Dqqq.version=4.1.0-SNAPSHOT. -->
<!-- Opt-in check against the next qqq line: mvn -B verify -Pqqq-snapshot -->
<!-- (override the version with -Dqqq.snapshot.version=...). Default builds -->
<!-- take the qqq version only from qbit-build-parent (ADR-0007). -->
<profile>
<id>qqq-version-override</id>
<activation>
<property>
<name>qqq.version</name>
</property>
</activation>
<id>qqq-snapshot</id>
<properties>
<qqq.snapshot.version>4.1.0-SNAPSHOT</qqq.snapshot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.kingsrook.qqq</groupId>
<artifactId>qqq-bom-pom</artifactId>
<version>${qqq.version}</version>
<version>${qqq.snapshot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>sonatype-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
</project>