diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 4109c7539..000000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,6 +0,0 @@ -bug: - - '(?i)\bbug\b' -feature: - - '(?i)\bfeature\b' -question: - - '(?i)\bquestion\b' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84475fd87..7c55ac0a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,13 +1,19 @@ name: CI on: - workflow_run: - workflows: ["Format"] - types: [completed] + pull_request: + branches: + - develop + - main + - master + push: + branches: + - develop + - main + - master jobs: build: - if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/google-java-format.yml b/.github/workflows/google-java-format.yml index 3c3fafb82..3f176c40f 100644 --- a/.github/workflows/google-java-format.yml +++ b/.github/workflows/google-java-format.yml @@ -3,7 +3,8 @@ name: Format on: pull_request: branches: - - develop + - main + - master jobs: diff --git a/.github/workflows/issue-labeler.yml b/.github/workflows/issue-labeler.yml deleted file mode 100644 index 658b7e7a3..000000000 --- a/.github/workflows/issue-labeler.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Issue Labeler - -on: - issues: - types: [opened] - -permissions: - issues: write - contents: read - -jobs: - triage: - runs-on: ubuntu-latest - steps: - - uses: github/issue-labeler@v3 - with: - configuration-path: .github/labeler.yml - include-title: 1 - repo-token: ${{ github.token }} - - if: github.actor == 'github-actions[bot]' - uses: actions/github-script@v7 - with: - script: | - github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - labels: ['codex'] - }) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index fe251a375..000000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Publish - -on: - release: - types: [published] - workflow_dispatch: - -jobs: - deploy: - if: ${{ github.event_name == 'release' && github.event.action == 'published' || github.event_name == 'workflow_dispatch' }} - runs-on: ubuntu-latest - permissions: - contents: read - steps: - - name: Checkout release tag - if: ${{ github.event_name == 'release' }} - uses: actions/checkout@v5 - with: - ref: ${{ github.event.release.tag_name }} - - name: Checkout default branch - if: ${{ github.event_name != 'release' }} - uses: actions/checkout@v5 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - cache: 'maven' - - name: Import GPG key - run: | - echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import - - name: Configure Maven - run: | - mkdir -p ~/.m2 - cat < ~/.m2/settings.xml - - - - reposilite-releases - ${MAVEN_USERNAME} - ${MAVEN_PASSWORD} - - - reposilite-snapshots - ${MAVEN_USERNAME} - ${MAVEN_PASSWORD} - - - gpg.passphrase - ${GPG_PASSPHRASE} - - - - EOF - env: - MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - - name: Publish artifacts - run: ./mvnw -q deploy - env: - MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml index cfe76aee8..8582c87f5 100644 --- a/.github/workflows/qodana_code_quality.yml +++ b/.github/workflows/qodana_code_quality.yml @@ -1,11 +1,11 @@ name: Qodana on: workflow_dispatch: - pull_request: push: - branches: # Specify your branches here - - main # The 'main' branch - - 'releases/*' # The release branches + branches: + - develop + - main + - master jobs: qodana: diff --git a/.mvn/maven.config b/.mvn/maven.config index 9159a424c..affad39a4 100644 --- a/.mvn/maven.config +++ b/.mvn/maven.config @@ -1 +1 @@ --T 2 \ No newline at end of file +-T2 \ No newline at end of file diff --git a/PR.md b/PR.md new file mode 100644 index 000000000..4067dc902 --- /dev/null +++ b/PR.md @@ -0,0 +1,82 @@ +Proposed title: fix: Fix CalendarContent addTag duplication; address Qodana findings and add tests + +## Summary +This PR fixes a duplication bug in `CalendarContent.addTag`, cleans up Qodana-reported issues (dangling Javadoc, missing Javadoc descriptions, fields that can be final, and safe resource usage), and adds unit tests to validate correct tag handling. + +Related issue: #____ + +## What changed? +- Fix duplication in calendar tag collection + - F:nostr-java-event/src/main/java/nostr/event/entities/CalendarContent.java†L184-L188 + - Replace re-put/addAll pattern with `computeIfAbsent(...).add(...)` to append a single element without duplicating the list. + - F:nostr-java-event/src/main/java/nostr/event/entities/CalendarContent.java†L40-L40 + - Make `classTypeTagsMap` final. + +- Unit tests for calendar tag handling + - F:nostr-java-event/src/test/java/nostr/event/unit/CalendarContentAddTagTest.java†L16-L31 + - F:nostr-java-event/src/test/java/nostr/event/unit/CalendarContentAddTagTest.java†L33-L45 + - F:nostr-java-event/src/test/java/nostr/event/unit/CalendarContentAddTagTest.java†L47-L64 + +- Javadoc placement fixes (resolve DanglingJavadoc by placing Javadoc above `@Override`) + - F:nostr-java-api/src/main/java/nostr/api/NostrSpringWebSocketClient.java†L112-L116, L132-L136, L146-L150, L155-L159, L164-L168, L176-L180, L206-L210, L293-L297, L302-L306, L321-L325 + - F:nostr-java-event/src/main/java/nostr/event/json/codec/GenericEventDecoder.java†L25-L33 + - F:nostr-java-event/src/main/java/nostr/event/json/codec/Nip05ContentDecoder.java†L22-L30 + - F:nostr-java-event/src/main/java/nostr/event/json/codec/BaseTagDecoder.java†L22-L30 + - F:nostr-java-event/src/main/java/nostr/event/json/codec/BaseMessageDecoder.java†L27-L35 + - F:nostr-java-event/src/main/java/nostr/event/json/codec/GenericTagDecoder.java†L26-L34 + +- Javadoc description additions (fix `@param`, `@return`, `@throws` missing) + - F:nostr-java-crypto/src/main/java/nostr/crypto/schnorr/Schnorr.java†L20-L28, L33-L41 + - F:nostr-java-crypto/src/main/java/nostr/crypto/bech32/Bech32.java†L80-L89, L91-L100, L120-L128 + +- Fields that may be final + - F:nostr-java-api/src/main/java/nostr/api/WebSocketClientHandler.java†L31-L32 + - F:nostr-java-event/src/main/java/nostr/event/entities/CalendarContent.java†L40-L40 + +- Resource inspections: explicitly managed or non-closeable resources + - F:nostr-java-api/src/main/java/nostr/api/WebSocketClientHandler.java†L87-L90, L101-L103 + - Suppress false positives for long-lived `SpringWebSocketClient` managed by handler lifecycle. + - F:nostr-java-util/src/main/java/nostr/util/validator/Nip05Validator.java†L95-L96 + - Suppress on JDK `HttpClient` which is not AutoCloseable and intended to be reused. + +- Remove redundant catch and commented-out code + - F:nostr-java-event/src/main/java/nostr/event/impl/CreateOrUpdateProductEvent.java†L59-L61 + - F:nostr-java-event/src/main/java/nostr/event/entities/ZapRequest.java†L12-L19 + +## BREAKING +None. + +## Review focus +- Confirm the intention for `CalendarContent` is to accumulate tags per code without list duplication. +- Sanity-check placement of `@SuppressWarnings("resource")` where resources are explicitly lifecycle-managed. + +## Checklist +- [x] Scope ≤ 300 lines (or split/stack) +- [x] Title is verb + object (Conventional Commits: `fix: ...`) +- [x] Description links the issue and answers “why now?” +- [x] BREAKING flagged if needed +- [x] Tests/docs updated (if relevant) + +## Testing +- ✅ `mvn -q -DskipTests package` + - Build succeeded for all modules. +- ✅ `mvn -q -Dtest=CalendarContentAddTagTest test` (run in `nostr-java-event`) + - Tests executed successfully. New tests validate: + - Two hashtags produce exactly two items without duplication. + - Single participant `PubKeyTag` stored once with expected key. + - Different tag types tracked independently. +- ⚠️ `mvn -q verify` + - Fails in this sandbox due to Mockito’s inline mock-maker requiring a Byte Buddy agent attach, which is blocked: + - Excerpt: + - `Could not initialize plugin: interface org.mockito.plugins.MockMaker` + - `MockitoInitializationException: Could not initialize inline Byte Buddy mock maker.` + - `Could not self-attach to current VM using external process` + - Local runs in a non-restricted environment should pass once the agent is allowed or Mockito is configured accordingly. + +## Network Access +- No external network calls required by these changes. +- No blocked domains observed. Test failures are unrelated to network and stem from sandbox agent-attach restrictions. + +## Notes +- `CalendarContent.addTag` previously reinserted the list and added all elements again, causing duplication. The fix uses `computeIfAbsent` and appends exactly one element. +- I intentionally placed `@SuppressWarnings("resource")` where objects are long-lived or non-`AutoCloseable` (e.g., Java `HttpClient`) to silence false positives noted by Qodana. diff --git a/PR_BOM_MIGRATION.md b/PR_BOM_MIGRATION.md new file mode 100644 index 000000000..f7ed78f80 --- /dev/null +++ b/PR_BOM_MIGRATION.md @@ -0,0 +1,55 @@ +title: feat: migrate to nostr-java-bom for centralized version management + +## Summary +Related issue: #____ +Migrate nostr-java to use `nostr-java-bom` for centralized dependency version management across the Nostr Java ecosystem. This eliminates duplicate version properties and ensures consistent dependency versions. + +## What changed? +- **Version bump**: `0.4.0` → `0.5.0` +- **BOM updated**: nostr-java-bom `1.0.0` → `1.1.0` (now includes Spring Boot dependencies) +- Remove Spring Boot parent POM dependency +- Replace 30+ version properties with single `nostr-java-bom.version` property (F:pom.xml†L77) +- Import `nostr-java-bom:1.1.0` in `dependencyManagement` (F:pom.xml†L87-L93) +- Remove version tags from all dependencies across modules: + - `nostr-java-crypto`: removed bcprov-jdk18on version (F:nostr-java-crypto/pom.xml†L37) + - `nostr-java-util`: removed commons-lang3 version (F:nostr-java-util/pom.xml†L28) + - `nostr-java-client`: removed Spring Boot versions, added compile scope for awaitility (F:nostr-java-client/pom.xml†L56) + - `nostr-java-api`: removed Spring Boot versions +- Simplify plugin management - versions now inherited from BOM (F:pom.xml†L100-L168) +- Update nostr-java-bom to import Spring Boot dependencies BOM + +## BOM Architecture Changes +``` +nostr-java-bom 1.1.0 (updated) + ├─ imports spring-boot-dependencies (NEW) + ├─ defines nostr-java modules (updated to 0.5.0) + └─ defines shared dependencies (BouncyCastle, Jackson, Lombok, test deps) +``` + +## Benefits +- **Single source of truth**: All Nostr Java dependency versions managed in one place +- **Consistency**: Identical dependency versions across all Nostr projects +- **Simplified updates**: Bump dependency versions once in BOM, all projects inherit it +- **Reduced duplication**: From 30+ version properties to 1 +- **Spring Boot integration**: Now imports Spring Boot BOM for Spring dependencies + +## BREAKING +None. Internal build configuration change only; no API or runtime behavior changes. + +## Protocol Compliance +- No change to NIP (Nostr Implementation Possibilities) compliance +- Behavior remains compliant with Nostr protocol specifications + +## Testing +- ✅ `mvn clean install -DskipTests -U` - BUILD SUCCESS +- All modules compile successfully with BOM-managed versions +- Plugin version warnings are non-blocking + +## Checklist +- [x] Title uses `type: description` +- [x] File citations included +- [x] Version bumped to 0.5.0 +- [x] nostr-java-bom updated to 1.1.0 with Spring Boot support +- [x] Build verified with BOM +- [x] No functional changes; protocol compliance unchanged +- [x] BOM deployed to https://maven.398ja.xyz/releases/xyz/tcheeric/nostr-java-bom/1.1.0/ diff --git a/nostr-java-api/pom.xml b/nostr-java-api/pom.xml index cfe84bd58..c44977afa 100644 --- a/nostr-java-api/pom.xml +++ b/nostr-java-api/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -26,42 +26,42 @@ org.apache.commons commons-text - ${commons-text.version} + ${project.groupId} nostr-java-client - ${nostr-java.version} + ${project.groupId} nostr-java-encryption - ${nostr-java.version} + ${project.groupId} nostr-java-id - ${nostr-java.version} + ${project.groupId} nostr-java-event - ${nostr-java.version} + ${project.groupId} nostr-java-util - ${nostr-java.version} + ${project.groupId} nostr-java-crypto - ${nostr-java.version} + org.springframework.boot spring-boot-starter - ${spring-boot.version} + com.fasterxml.jackson.core @@ -70,7 +70,7 @@ org.projectlombok lombok - ${lombok.version} + provided @@ -85,19 +85,19 @@ org.springframework.boot spring-boot-starter-test - ${spring-boot.version} + test com.google.guava guava - ${guava.version} + test org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/nostr-java-base/pom.xml b/nostr-java-base/pom.xml index 2fdbd8178..d7e6c60fa 100644 --- a/nostr-java-base/pom.xml +++ b/nostr-java-base/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -27,12 +27,12 @@ ${project.groupId} nostr-java-util - ${nostr-java.version} + ${project.groupId} nostr-java-crypto - ${nostr-java.version} + @@ -43,14 +43,14 @@ com.fasterxml.jackson.module jackson-module-blackbird - ${jackson-module-blackbird.version} + org.projectlombok lombok - ${lombok.version} + provided @@ -62,7 +62,7 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/nostr-java-client/pom.xml b/nostr-java-client/pom.xml index 4f560fb67..e0167f83a 100644 --- a/nostr-java-client/pom.xml +++ b/nostr-java-client/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -27,14 +27,14 @@ ${project.groupId} nostr-java-id - ${nostr-java.version} + org.springframework.boot spring-boot-starter-websocket - ${spring-boot.version} + org.springframework @@ -53,14 +53,14 @@ org.awaitility awaitility - ${awaitility.version} + compile org.projectlombok lombok - ${lombok.version} + provided @@ -68,13 +68,13 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test org.springframework.boot spring-boot-starter-test - ${spring-boot.version} + test diff --git a/nostr-java-crypto/pom.xml b/nostr-java-crypto/pom.xml index 47d9aa38c..610473219 100644 --- a/nostr-java-crypto/pom.xml +++ b/nostr-java-crypto/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -35,21 +35,20 @@ org.bouncycastle bcprov-jdk18on - ${bcprov-jdk18on.version} ${project.groupId} nostr-java-util - ${nostr-java.version} + org.projectlombok lombok - ${lombok.version} + provided @@ -61,7 +60,7 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/nostr-java-encryption/pom.xml b/nostr-java-encryption/pom.xml index 1bce75e5f..2b8794961 100644 --- a/nostr-java-encryption/pom.xml +++ b/nostr-java-encryption/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -30,19 +30,19 @@ ${project.groupId} nostr-java-crypto - ${nostr-java.version} + ${project.groupId} nostr-java-util - ${nostr-java.version} + org.projectlombok lombok - ${lombok.version} + provided @@ -50,7 +50,7 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/nostr-java-event/pom.xml b/nostr-java-event/pom.xml index 5fea85e62..0c5346b52 100644 --- a/nostr-java-event/pom.xml +++ b/nostr-java-event/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -27,17 +27,17 @@ ${project.groupId} nostr-java-base - ${nostr-java.version} + ${project.groupId} nostr-java-crypto - ${nostr-java.version} + ${project.groupId} nostr-java-util - ${nostr-java.version} + com.fasterxml.jackson.core @@ -46,12 +46,12 @@ com.fasterxml.jackson.module jackson-module-blackbird - ${jackson-module-blackbird.version} + org.projectlombok lombok - ${lombok.version} + provided @@ -61,7 +61,7 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/nostr-java-event/src/test/java/nostr/event/unit/CalendarContentAddTagTest.java b/nostr-java-event/src/test/java/nostr/event/unit/CalendarContentAddTagTest.java new file mode 100644 index 000000000..5ea56485d --- /dev/null +++ b/nostr-java-event/src/test/java/nostr/event/unit/CalendarContentAddTagTest.java @@ -0,0 +1,66 @@ +package nostr.event.unit; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import org.junit.jupiter.api.Test; +import nostr.base.PublicKey; +import nostr.event.entities.CalendarContent; +import nostr.event.tag.HashtagTag; +import nostr.event.tag.IdentifierTag; +import nostr.event.tag.PubKeyTag; + +public class CalendarContentAddTagTest { + + @Test + // Ensures adding two hashtag tags results in exactly two items without duplication. + void testAddTwoHashtagTagsNoDuplication() { + CalendarContent content = new CalendarContent<>(new IdentifierTag("id-1"), "title", 1L); + + HashtagTag t1 = new HashtagTag("tag1"); + HashtagTag t2 = new HashtagTag("tag2"); + + content.addHashtagTag(t1); + content.addHashtagTag(t2); + + List tags = content.getHashtagTags(); + assertEquals(2, tags.size()); + assertEquals("tag1", tags.get(0).getHashTag()); + assertEquals("tag2", tags.get(1).getHashTag()); + } + + @Test + // Verifies adding a participant PubKeyTag produces a single entry with the expected key. + void testAddParticipantPubKeyTagNoDuplication() { + CalendarContent content = new CalendarContent<>(new IdentifierTag("id-2"), "title", 1L); + + String hex = "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"; + PubKeyTag p = new PubKeyTag(new PublicKey(hex)); + content.addParticipantPubKeyTag(p); + + List pTags = content.getParticipantPubKeyTags(); + assertEquals(1, pTags.size()); + assertEquals(hex, pTags.get(0).getPublicKey().toString()); + } + + @Test + // Confirms different tag types are tracked independently with correct counts. + void testAddMultipleTagTypesIndependent() { + CalendarContent content = new CalendarContent<>(new IdentifierTag("id-3"), "title", 1L); + + // Add two hashtags + content.addHashtagTag(new HashtagTag("a")); + content.addHashtagTag(new HashtagTag("b")); + + // Add one participant pubkey + content.addParticipantPubKeyTag( + new PubKeyTag( + new PublicKey("2bed79f81439ff794cf5ac5f7bff9121e257f399829e472c7a14d3e86fe76984"))); + + assertEquals(2, content.getHashtagTags().size()); + assertEquals(1, content.getParticipantPubKeyTags().size()); + assertTrue(content.getGeohashTag().isEmpty()); + } +} + diff --git a/nostr-java-examples/pom.xml b/nostr-java-examples/pom.xml index 3c6fef75e..635a3f6cf 100644 --- a/nostr-java-examples/pom.xml +++ b/nostr-java-examples/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -27,7 +27,7 @@ ${project.groupId} nostr-java-api - ${nostr-java.version} + diff --git a/nostr-java-id/pom.xml b/nostr-java-id/pom.xml index e0207bc1f..f0075b4cf 100644 --- a/nostr-java-id/pom.xml +++ b/nostr-java-id/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -27,12 +27,12 @@ ${project.groupId} nostr-java-event - ${nostr-java.version} + org.projectlombok lombok - ${lombok.version} + provided @@ -42,7 +42,7 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/nostr-java-util/pom.xml b/nostr-java-util/pom.xml index 6683b65be..470f26e63 100644 --- a/nostr-java-util/pom.xml +++ b/nostr-java-util/pom.xml @@ -4,7 +4,7 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 ../pom.xml @@ -26,7 +26,6 @@ org.apache.commons commons-lang3 - ${commons-lang3.version} com.fasterxml.jackson.core @@ -35,12 +34,12 @@ com.fasterxml.jackson.module jackson-module-blackbird - ${jackson-module-blackbird.version} + org.projectlombok lombok - ${lombok.version} + provided @@ -50,7 +49,7 @@ org.junit.jupiter junit-jupiter - ${junit-jupiter.version} + test diff --git a/pom.xml b/pom.xml index 633a35429..547c57577 100644 --- a/pom.xml +++ b/pom.xml @@ -3,15 +3,9 @@ xyz.tcheeric nostr-java - 0.4.0 + 0.5.0 pom - - org.springframework.boot - spring-boot-starter-parent - 3.5.5 - - ${project.artifactId} Java SDK for Nostr, for generating, signing and publishing events to relays https://github.com/tcheeric/nostr-java @@ -74,51 +68,50 @@ - 0.4.0 21 - - 3.5.5 ${java.version} ${java.version} UTF-8 - - 1.81 - 4.3.0 - 1.81 - 3.18.0 - 1.12.0 - 2.19.2 - 1.18.38 - - - 33.4.8-jre - 5.13.4 - 1.21.3 + + 1.1.0 - - 0.8.0 - 0.8.13 - 1.7.2 - 3.14.0 - 3.5.3 - 3.2.8 - 3.11.3 - 3.3.1 - 3.5.3 + + 0.8.0 + 3.3.1 + 3.11.3 + 3.2.8 + 1.7.2 + 3.14.0 + 3.5.3 + 0.8.13 + 3.5.3 + + + + + xyz.tcheeric + nostr-java-bom + ${nostr-java-bom.version} + pom + import + + + + org.sonatype.central central-publishing-maven-plugin - ${central-publishing-maven-plugin.version} + ${central.publishing.plugin.version} true central @@ -129,7 +122,7 @@ org.apache.maven.plugins maven-source-plugin - ${maven-source-plugin.version} + ${maven.source.plugin.version} attach-sources @@ -142,7 +135,7 @@ org.apache.maven.plugins maven-javadoc-plugin - ${maven-javadoc-plugin.version} + ${maven.javadoc.plugin.version} attach-javadocs @@ -155,7 +148,7 @@ org.apache.maven.plugins maven-gpg-plugin - ${maven-gpg-plugin.version} + ${maven.gpg.plugin.version} sign-artifacts @@ -175,7 +168,7 @@ org.codehaus.mojo flatten-maven-plugin - ${flatten-maven-plugin.version} + ${flatten.plugin.version} true resolveCiFriendliesOnly @@ -200,7 +193,7 @@ org.apache.maven.plugins maven-compiler-plugin - ${maven-compiler-plugin.version} + ${maven.compiler.plugin.version} ${maven.compiler.source} ${maven.compiler.target} @@ -209,7 +202,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} + ${maven.surefire.plugin.version} @@ -221,7 +214,7 @@ org.jacoco jacoco-maven-plugin - ${jacoco-maven-plugin.version} + ${jacoco.plugin.version} @@ -240,7 +233,7 @@ org.apache.maven.plugins maven-failsafe-plugin - ${maven-failsafe-plugin.version} + ${maven.failsafe.plugin.version} @@ -263,11 +256,11 @@ maven-surefire-plugin - ${maven-surefire-plugin.version} + ${maven.surefire.plugin.version} maven-failsafe-plugin - ${maven-failsafe-plugin.version} + ${maven.failsafe.plugin.version} org.apache.maven.plugins