diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1ab9369..db14caa 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,6 +7,9 @@ updates: interval: "weekly" day: "saturday" open-pull-requests-limit: 10 + ignore: + - dependency-name: "eu.europa.ec.joinup.sat:*" + - dependency-name: "org.netbeans.api:*" - package-ecosystem: "github-actions" target-branch: "develop" directory: "/" diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml new file mode 100644 index 0000000..8627b21 --- /dev/null +++ b/.github/workflows/check-links.yml @@ -0,0 +1,40 @@ +name: Check links in documentation + +on: + push: + paths: + - '.github/workflows/check-links.yml' + - 'lychee.toml' + - '**/*.md' + schedule: + # Run on the first of each month at 9:00 AM + - cron: "0 9 1 * *" + workflow_dispatch: + +concurrency: + group: "${{ github.workflow }}-${{ github.head_ref }}" + cancel-in-progress: true + +jobs: + lychee: + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + + - name: Restore lychee cache + uses: actions/cache@v4 + with: + path: .lycheecache + key: cache-lychee-${{ github.sha }} + restore-keys: cache-lychee- + + - name: Check links + id: lychee + uses: lycheeverse/lychee-action@v1.10.0 + with: + fail: true + args: --max-concurrency 1 --cache --no-progress --exclude-all-private './**/*.md' diff --git a/.github/workflows/heylogs.yml b/.github/workflows/heylogs.yml new file mode 100644 index 0000000..c0e0bf5 --- /dev/null +++ b/.github/workflows/heylogs.yml @@ -0,0 +1,33 @@ +name: Heylogs + +on: [ push ] + +jobs: + badge-job: + if: startsWith(github.repository, 'nbbrd/') && startsWith(github.ref, 'refs/heads/develop') + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 21 + cache: 'maven' + + - name: Scan changelog + run: mvn -B -ntp -U com.github.nbbrd.heylogs:heylogs-maven-plugin::scan -Dheylogs.output.file=scan.json -Dheylogs.format.id=json + + - name: Create badges endpoint json + run: | + mkdir heylogs + jq '{schemaVersion: 1, label: "unreleased changes", message: "#\(.[0].summary.unreleasedChanges)", color: "E05735", logoColor: "white", namedLogo: "keepachangelog"}' scan.json > heylogs/unreleased-changes.json + + - name: Deploy badges endpoint json + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: badges + publish_dir: ./heylogs diff --git a/.github/workflows/java-ea-maven.yml b/.github/workflows/java-ea-maven.yml index 7906c03..a690e85 100644 --- a/.github/workflows/java-ea-maven.yml +++ b/.github/workflows/java-ea-maven.yml @@ -11,8 +11,8 @@ jobs: strategy: fail-fast: false matrix: - java: [ 20 ] - os: [ ubuntu-latest ] + java: [ 21 ] + os: [ ubuntu-latest, macos-latest ] name: JDK${{ matrix.java }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -25,7 +25,7 @@ jobs: fetch-depth: 0 - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: ${{ matrix.java }} @@ -34,4 +34,4 @@ jobs: - name: Build and (headless) test with Maven uses: smithki/xvfb-action@v1.1.2 with: - run: mvn -U -B -ntp package + run: mvn -U -B -ntp verify diff --git a/.github/workflows/java-maven.yml b/.github/workflows/java-maven.yml index 411b138..0985347 100644 --- a/.github/workflows/java-maven.yml +++ b/.github/workflows/java-maven.yml @@ -1,6 +1,6 @@ name: Java8+ with Maven -on: [ push, pull_request ] +on: [ push, pull_request, workflow_dispatch ] jobs: build-and-test-job: @@ -8,8 +8,8 @@ jobs: strategy: fail-fast: false matrix: - java: [ 17 ] - os: [ ubuntu-latest, macOS-latest, windows-latest ] + java: [ 21 ] + os: [ ubuntu-latest, macos-13, windows-latest ] name: JDK${{ matrix.java }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -22,19 +22,23 @@ jobs: fetch-depth: 0 - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: ${{ matrix.java }} cache: 'maven' - name: Pre-download dependencies with Maven - run: mvn -U -B -ntp dependency:go-offline + uses: nick-fields/retry@v3 + with: + command: mvn -U -B -ntp dependency:go-offline + max_attempts: 3 + timeout_minutes: 5 - name: Build and (headless) test with Maven uses: smithki/xvfb-action@v1.1.2 with: - run: mvn -U -B -ntp package + run: mvn -U -B -ntp verify auto-merge-job: needs: build-and-test-job @@ -48,7 +52,11 @@ jobs: steps: - name: Merge PR - run: gh pr merge --auto --rebase "$PR_URL" + uses: nick-fields/retry@v3 + with: + command: gh pr merge --auto --rebase "$PR_URL" + max_attempts: 3 + timeout_minutes: 5 env: PR_URL: ${{github.event.pull_request.html_url}} GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} @@ -58,7 +66,7 @@ jobs: if: startsWith(github.repository, 'nbbrd/') && startsWith(github.ref, 'refs/heads/develop') strategy: matrix: - java: [ 17 ] + java: [ 21 ] os: [ ubuntu-latest ] name: Snapshot on develop @@ -72,7 +80,7 @@ jobs: fetch-depth: 0 - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: ${{ matrix.java }} @@ -96,7 +104,7 @@ jobs: - name: Upload JReleaser output if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: assets-snapshot-log path: | @@ -108,7 +116,7 @@ jobs: if: startsWith(github.repository, 'nbbrd/') && startsWith(github.ref, 'refs/tags/v') strategy: matrix: - java: [ 17 ] + java: [ 21 ] os: [ ubuntu-latest ] name: Release on tag @@ -122,7 +130,7 @@ jobs: fetch-depth: 0 - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: ${{ matrix.java }} @@ -148,7 +156,7 @@ jobs: - name: Upload JReleaser output if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: assets-release-log path: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 613257d..8fdc815 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [3.2.0] - 2024-10-04 + +This is a feature release of SDMX extensions for JDemetra+ v3. +[JDemetra+ v3.1.1 or later](https://github.com/jdemetra/jdplus-main) version is required to run it. + +### Added + +- Add logging of events + +### Fixed + +- Fix sources file property in configuration + +### Changed + +- Bump sdmx-dl from 3.0.0-beta.12 to [3.0.0-beta.13](https://github.com/nbbrd/sdmx-dl/releases/tag/v3.0.0-beta.13) + ## [3.1.0] - 2023-10-16 This is a feature release of SDMX extensions for JDemetra+ v3. @@ -30,6 +47,7 @@ This is a feature release of SDMX extensions for JDemetra+ v3. This is the **initial release** of SDMX extensions for JDemetra+ v3. [JDemetra+ v3.0.2 or later](https://github.com/jdemetra/jdplus-main) version is required to run it. -[Unreleased]: https://github.com/nbbrd/jdplus-sdmx/compare/v3.1.0...HEAD +[Unreleased]: https://github.com/nbbrd/jdplus-sdmx/compare/v3.2.0...HEAD +[3.2.0]: https://github.com/nbbrd/jdplus-sdmx/compare/v3.1.0...v3.2.0 [3.1.0]: https://github.com/nbbrd/jdplus-sdmx/compare/v3.0.0...v3.1.0 [3.0.0]: https://github.com/nbbrd/jdplus-sdmx/releases/tag/v3.0.0 diff --git a/README.md b/README.md index b48d10c..d5495b2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # SDMX extensions for JDemetra+ v3 [![Download](https://img.shields.io/github/release/nbbrd/jdplus-sdmx.svg)](https://github.com/nbbrd/jdplus-sdmx/releases/latest) +[![Changes](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnbbrd%2Fjdplus-sdmx%2Fbadges%2Funreleased-changes.json)](https://github.com/nbbrd/jdplus-sdmx/blob/develop/CHANGELOG.md) This plugin provides time series from [SDMX](https://sdmx.org/) to [JDemetra+ v3](https://github.com/jdemetra/jdplus-main) by querying web services and parsing local files. diff --git a/jdplus-sdmx-base/jdplus-sdmx-base-parent/jdplus-sdmx-base-api/pom.xml b/jdplus-sdmx-base/jdplus-sdmx-base-parent/jdplus-sdmx-base-api/pom.xml index 79866ac..42f35e0 100644 --- a/jdplus-sdmx-base/jdplus-sdmx-base-parent/jdplus-sdmx-base-api/pom.xml +++ b/jdplus-sdmx-base/jdplus-sdmx-base-parent/jdplus-sdmx-base-api/pom.xml @@ -7,7 +7,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx-base-parent - 3.1.0 + 3.2.0 jdplus-sdmx-base-api diff --git a/jdplus-sdmx-base/jdplus-sdmx-base-parent/pom.xml b/jdplus-sdmx-base/jdplus-sdmx-base-parent/pom.xml index c44acee..ca17507 100644 --- a/jdplus-sdmx-base/jdplus-sdmx-base-parent/pom.xml +++ b/jdplus-sdmx-base/jdplus-sdmx-base-parent/pom.xml @@ -5,7 +5,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx-base - 3.1.0 + 3.2.0 jdplus-sdmx-base-parent diff --git a/jdplus-sdmx-base/pom.xml b/jdplus-sdmx-base/pom.xml index 083c0eb..8c66b4f 100644 --- a/jdplus-sdmx-base/pom.xml +++ b/jdplus-sdmx-base/pom.xml @@ -6,7 +6,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx - 3.1.0 + 3.2.0 jdplus-sdmx-base diff --git a/jdplus-sdmx-bom/pom.xml b/jdplus-sdmx-bom/pom.xml index 68b82d4..f8cb404 100644 --- a/jdplus-sdmx-bom/pom.xml +++ b/jdplus-sdmx-bom/pom.xml @@ -7,7 +7,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx - 3.1.0 + 3.2.0 jdplus-sdmx-bom @@ -42,7 +42,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.5.0 + 1.6.0 bom ${project.build.directory} @@ -89,7 +89,6 @@ org.jreleaser jreleaser-maven-plugin - 1.8.0 release-assets diff --git a/jdplus-sdmx-cli/jdplus-sdmx-cli-plugin/pom.xml b/jdplus-sdmx-cli/jdplus-sdmx-cli-plugin/pom.xml index b4c8172..8925dde 100644 --- a/jdplus-sdmx-cli/jdplus-sdmx-cli-plugin/pom.xml +++ b/jdplus-sdmx-cli/jdplus-sdmx-cli-plugin/pom.xml @@ -6,7 +6,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx-cli - 3.1.0 + 3.2.0 jdplus-sdmx-cli-plugin diff --git a/jdplus-sdmx-cli/pom.xml b/jdplus-sdmx-cli/pom.xml index 680483e..a7a6772 100644 --- a/jdplus-sdmx-cli/pom.xml +++ b/jdplus-sdmx-cli/pom.xml @@ -6,7 +6,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx - 3.1.0 + 3.2.0 jdplus-sdmx-cli diff --git a/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/pom.xml b/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/pom.xml index 476ef7d..d2dd2be 100644 --- a/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/pom.xml +++ b/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/pom.xml @@ -6,7 +6,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx-desktop - 3.1.0 + 3.2.0 jdplus-sdmx-desktop-plugin @@ -123,7 +123,7 @@ com.github.nbbrd.java-desktop-util java-desktop-util-favicon - 2.3.0 + 2.4.0 diff --git a/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/Toggle.java b/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/Toggle.java index ff82b5b..96b4894 100644 --- a/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/Toggle.java +++ b/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/Toggle.java @@ -7,10 +7,14 @@ public enum Toggle { DEFAULT, DISABLE, ENABLE; public void applyTo(Properties properties, CharSequence key) { + applyTo(properties, key, "false", "true"); + } + + public void applyTo(Properties properties, CharSequence key, String disableValue, String enableValue) { switch (this) { case DEFAULT -> properties.remove(key.toString()); - case DISABLE -> properties.setProperty(key.toString(), Boolean.toString(false)); - case ENABLE -> properties.setProperty(key.toString(), Boolean.toString(true)); + case DISABLE -> properties.setProperty(key.toString(), disableValue); + case ENABLE -> properties.setProperty(key.toString(), enableValue); } } } diff --git a/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/web/SdmxWebConfiguration.java b/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/web/SdmxWebConfiguration.java index 2a4f75a..c5119e5 100644 --- a/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/web/SdmxWebConfiguration.java +++ b/jdplus-sdmx-desktop/jdplus-sdmx-desktop-plugin/src/main/java/jdplus/sdmx/desktop/plugin/web/SdmxWebConfiguration.java @@ -12,19 +12,25 @@ import sdmxdl.Languages; import sdmxdl.web.SdmxWebManager; import sdmxdl.web.WebSource; +import standalone_sdmxdl.nbbrd.io.text.BooleanProperty; import standalone_sdmxdl.nbbrd.io.text.Parser; +import standalone_sdmxdl.nbbrd.io.text.Property; +import standalone_sdmxdl.sdmxdl.provider.PropertiesSupport; import standalone_sdmxdl.sdmxdl.provider.ri.caching.RiCaching; -import standalone_sdmxdl.sdmxdl.provider.ri.drivers.SourceProperties; import standalone_sdmxdl.sdmxdl.provider.ri.networking.RiNetworking; +import standalone_sdmxdl.sdmxdl.provider.ri.registry.RiRegistry; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.File; import java.io.IOException; -import java.util.Collections; -import java.util.List; import java.util.Locale; import java.util.Properties; +import java.util.function.Function; +import java.util.logging.Level; +import static java.util.Collections.emptyMap; + +@lombok.extern.java.Log @lombok.Data public class SdmxWebConfiguration { @@ -60,6 +66,10 @@ public class SdmxWebConfiguration { private static final boolean DEFAULT_DISPLAY_CODES = false; private boolean displayCodes = DEFAULT_DISPLAY_CODES; + private static final String LOG_EVENTS_PROPERTY = "logEvents"; + private static final boolean DEFAULT_LOG_EVENTS = false; + private boolean logEvents = DEFAULT_LOG_EVENTS; + @MightBeGenerated public static SdmxWebConfiguration copyOf(SdmxWebConfiguration bean) { SdmxWebConfiguration result = new SdmxWebConfiguration(); @@ -71,31 +81,43 @@ public static SdmxWebConfiguration copyOf(SdmxWebConfiguration bean) { result.noDefaultSSL = bean.noDefaultSSL; result.noSystemSSL = bean.noSystemSSL; result.displayCodes = bean.displayCodes; + result.logEvents = bean.logEvents; return result; } public SdmxWebManager toSdmxWebManager() { Properties properties = System.getProperties(); - curlBackend.applyTo(properties, RiNetworking.CURL_BACKEND_PROPERTY); + if (sources != null && !sources.getPath().isEmpty()) { + properties.setProperty(RiRegistry.SOURCES_FILE_PROPERTY.getKey(), sources.getPath()); + } else { + properties.remove(RiRegistry.SOURCES_FILE_PROPERTY.getKey()); + } + + curlBackend.applyTo(properties, RiNetworking.URL_BACKEND_PROPERTY, "JDK", "CURL"); noCache.applyTo(properties, RiCaching.NO_CACHE_PROPERTY); autoProxy.applyTo(properties, RiNetworking.AUTO_PROXY_PROPERTY); noDefaultSSL.applyTo(properties, RiNetworking.NO_DEFAULT_SSL_PROPERTY); noSystemSSL.applyTo(properties, RiNetworking.NO_SYSTEM_SSL_PROPERTY); + logConfig(); + return SdmxWebManager.ofServiceLoader() .toBuilder() .onEvent(this::reportEvent) .onError(this::reportError) - .customSources(getCustomSources()) .build(); } - private static List getCustomSources() { - try { - return SourceProperties.loadCustomSources(); - } catch (IOException e) { - return Collections.emptyList(); + private void logConfig() { + Function properties = key -> PropertiesSupport.getProperty(emptyMap(), key); + if (log.isLoggable(Level.INFO)) { + for (Property p : new Property[]{RiRegistry.SOURCES_FILE_PROPERTY, RiNetworking.URL_BACKEND_PROPERTY}) { + log.log(Level.INFO, p.getKey() + ": " + p.get(properties)); + } + for (BooleanProperty p : new BooleanProperty[]{RiCaching.NO_CACHE_PROPERTY, RiNetworking.AUTO_PROXY_PROPERTY, RiNetworking.NO_DEFAULT_SSL_PROPERTY, RiNetworking.NO_SYSTEM_SSL_PROPERTY}) { + log.log(Level.INFO, p.getKey() + ": " + p.get(properties)); + } } } @@ -107,10 +129,18 @@ public Languages toLanguages() { private void reportEvent(WebSource source, String marker, CharSequence message) { StatusDisplayer.getDefault().setStatusText(message.toString()); + if (logEvents) { + log.log(Level.INFO, () -> asLogMessage(source, marker, message)); + } } private void reportError(WebSource source, String marker, CharSequence message, IOException error) { NotificationDisplayer.getDefault().notify(message.toString(), SdmxIcons.getDefaultIcon(), "", null); + log.log(Level.SEVERE, error, () -> asLogMessage(source, marker, message)); + } + + private static String asLogMessage(WebSource source, String marker, CharSequence message) { + return "[" + source.getId() + "] (" + marker + ") " + message; } Sheet toSheet() { @@ -159,6 +189,11 @@ Sheet toSheet() { .display("No system SSL") .description("Disable system truststore") .add(); + b.withBoolean() + .select(this, LOG_EVENTS_PROPERTY) + .display("Log events") + .description("Log events in IDE logs") + .add(); result.put(b.build()); return result; @@ -177,5 +212,6 @@ Sheet toSheet() { .with(PropertyHandler.onEnum(NO_DEFAULT_SSL_PROPERTY, DEFAULT_NO_DEFAULT_SSL), SdmxWebConfiguration::getNoDefaultSSL, SdmxWebConfiguration::setNoDefaultSSL) .with(PropertyHandler.onEnum(NO_SYSTEM_SSL_PROPERTY, DEFAULT_NO_SYSTEM_SSL), SdmxWebConfiguration::getNoSystemSSL, SdmxWebConfiguration::setNoSystemSSL) .with(PropertyHandler.onBoolean(DISPLAY_CODES_PROPERTY, DEFAULT_DISPLAY_CODES), SdmxWebConfiguration::isDisplayCodes, SdmxWebConfiguration::setDisplayCodes) + .with(PropertyHandler.onBoolean(LOG_EVENTS_PROPERTY, DEFAULT_LOG_EVENTS), SdmxWebConfiguration::isLogEvents, SdmxWebConfiguration::setLogEvents) .build(); } diff --git a/jdplus-sdmx-desktop/pom.xml b/jdplus-sdmx-desktop/pom.xml index 6db6343..22eaae2 100644 --- a/jdplus-sdmx-desktop/pom.xml +++ b/jdplus-sdmx-desktop/pom.xml @@ -6,7 +6,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx - 3.1.0 + 3.2.0 jdplus-sdmx-desktop @@ -16,7 +16,7 @@ - RELEASE190 + ${jdplus-main-netbeans.version} @@ -30,7 +30,7 @@ org.apache.netbeans.utilities nbm-maven-plugin - 4.8 + 14.2 diff --git a/pom.xml b/pom.xml index ff5877c..3c36a4e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.nbbrd.jdplus-sdmx jdplus-sdmx - 3.1.0 + 3.2.0 pom ${project.artifactId} @@ -39,6 +39,7 @@ UTF-8 + 2024-10-04T10:51:42Z 17 17 17 @@ -48,18 +49,19 @@ ${project.artifactId} - 1.18.30 - 1.7.0 - 1.5.0 - 3.39.0 + 1.18.34 + 1.9.0 + 1.5.1 + 3.48.0 - 5.10.0 - 3.24.2 + 5.11.1 + 3.26.3 3.1.1 - 3.0.0-beta.12 + RELEASE190 + 3.0.0-beta.13 @@ -124,27 +126,27 @@ org.apache.maven.plugins maven-clean-plugin - 3.3.1 + 3.4.0 org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.13.0 org.apache.maven.plugins maven-deploy-plugin - 3.1.1 + 3.1.3 org.apache.maven.plugins maven-install-plugin - 3.1.1 + 3.1.3 org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.2 org.apache.maven.plugins @@ -154,63 +156,75 @@ org.apache.maven.plugins maven-site-plugin - 3.12.1 + 3.20.0 org.apache.maven.plugins maven-surefire-plugin - 3.1.2 + 3.5.0 + + + org.apache.maven.surefire + surefire-junit-platform + 3.5.0 + + org.apache.maven.plugins maven-dependency-plugin - 3.6.0 + 3.8.0 org.apache.maven.plugins maven-enforcer-plugin - 3.4.1 + 3.5.0 org.gaul modernizer-maven-plugin - 2.7.0 + 2.9.0 de.thetaphi forbiddenapis - 3.6 + 3.7 com.github.nbbrd.heylogs heylogs-maven-plugin - 0.7.0 + 0.9.2 com.amashchenko.maven.plugin gitflow-maven-plugin - 1.20.0 + 1.21.0 org.apache.maven.plugins maven-source-plugin - 3.3.0 + 3.3.1 org.apache.maven.plugins maven-javadoc-plugin - 3.6.0 + 3.10.1 org.simplify4u.plugins sign-maven-plugin - 1.0.1 + 1.1.0 org.sonatype.plugins nexus-staging-maven-plugin - 1.6.13 + 1.7.0 + + + org.jreleaser + jreleaser-maven-plugin + 1.14.0 @@ -277,12 +291,12 @@ org.codehaus.mojo extra-enforcer-rules - 1.7.0 + 1.9.0 org.kordamp.maven pomchecker-enforcer-rules - 1.9.0 + 1.13.0 @@ -486,6 +500,7 @@ ossrh https://s01.oss.sonatype.org/ true + 10 @@ -511,6 +526,7 @@ ossrh https://s01.oss.sonatype.org/ true + 10