From f6f3de286eb705e0f417f287886148bb605863e3 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 27 Jan 2022 10:11:50 +0100 Subject: [PATCH 01/23] [gitflow-maven-plugin] Update for next development version 1.2.3-SNAPSHOT --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 5ac74c1..286d7b6 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ io.wcm.maven.plugins i18n-maven-plugin - 1.2.2 + 1.2.3-SNAPSHOT maven-plugin i18n Maven Plugin @@ -50,7 +50,7 @@ 3.0.5 - 2022-01-27T09:09:40Z + 2022-01-27T09:11:46Z invoker.mavenOpts From 3a5236f7cf39946c65b0a66d726b7745122d37c4 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Wed, 30 Mar 2022 14:35:11 +0200 Subject: [PATCH 02/23] update dependency --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 286d7b6..6ae96c1 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ io.wcm.maven io.wcm.maven.parent - 2.0.0 + 2.0.2 From 3619d0f7685556557b4ac3ad38157a326bf6b282 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Wed, 27 Apr 2022 17:29:27 +0200 Subject: [PATCH 03/23] merge jacoco results from unit tests and integration tests --- pom.xml | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 6ae96c1..e689133 100644 --- a/pom.xml +++ b/pom.xml @@ -180,21 +180,59 @@ - + + org.jacoco jacoco-maven-plugin + before-unit-test-execution prepare-agent + + + ${project.build.directory}/jacoco-output/jacoco-unit-tests.exec + surefire.jacoco.args + + + + before-integration-test-execution + prepare-agent-integration - report - report-integration + + + ${project.build.directory}/jacoco-output/jacoco-integration-tests.exec + invoker.jacoco.args + + + + merge-unit-and-integration + post-integration-test + + merge + + + + ${project.build.directory}/jacoco-output + + *.exec + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${surefire.jacoco.args} + + + org.apache.maven.plugins maven-invoker-plugin @@ -202,13 +240,14 @@ src/it ${project.build.directory}/it - **/pom.xml + */pom.xml verify true org.jacoco:org.jacoco.agent:${jacoco-maven-plugin.version}:jar:runtime + ${invoker.jacoco.args} From a7a709331b8c96b818ee31d3198be8dbf9d998d3 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Wed, 27 Apr 2022 18:24:13 +0200 Subject: [PATCH 04/23] update dependency --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e689133..5d6593f 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ io.wcm.maven io.wcm.maven.parent - 2.0.2 + 2.0.3-SNAPSHOT From 7ce7e10611bb3fc752380782ab237e35d4748049 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Tue, 10 May 2022 19:54:01 +0200 Subject: [PATCH 05/23] update dependency --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5d6593f..c020e22 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ io.wcm.maven io.wcm.maven.parent - 2.0.3-SNAPSHOT + 2.0.4 From 231fec9eb5dbdc82c8a056c535a5459b6bcbd897 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 23 Jun 2022 16:02:06 +0200 Subject: [PATCH 06/23] switch maven central badge to shields.io to avoid out-of-sync issues with maven index --- README.md | 2 +- src/site/markdown/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 46cd3f7..20f9284 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ i18n-maven-plugin ====== [![Build](https://github.com/wcm-io/io.wcm.maven.plugins.i18n-maven-plugin/workflows/Build/badge.svg?branch=develop)](https://github.com/wcm-io/io.wcm.maven.plugins.i18n-maven-plugin/actions?query=workflow%3ABuild+branch%3Adevelop) -[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.wcm.maven.plugins/i18n-maven-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.wcm.maven.plugins/i18n-maven-plugin) +[![Maven Central](https://img.shields.io/maven-central/v/io.wcm.maven.plugins/i18n-maven-plugin)](https://repo1.maven.org/maven2/io/wcm/maven/plugins/i18n-maven-plugin) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=wcm-io_io.wcm.maven.plugins.i18n-maven-plugin&metric=coverage)](https://sonarcloud.io/summary/new_code?id=wcm-io_io.wcm.maven.plugins.i18n-maven-plugin) Transforms and validates i18n resources for usage in Sling/AEM applications. diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md index 0bd3c9d..6e052e6 100644 --- a/src/site/markdown/index.md +++ b/src/site/markdown/index.md @@ -3,7 +3,7 @@ About i18n Maven Plugin Transforms and validates i18n resources for usage in Sling/AEM applications. -[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.wcm.maven.plugins/i18n-maven-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.wcm.maven.plugins/i18n-maven-plugin) +[![Maven Central](https://img.shields.io/maven-central/v/io.wcm.maven.plugins/i18n-maven-plugin)](https://repo1.maven.org/maven2/io/wcm/maven/plugins/i18n-maven-plugin) ### Documentation From 5308f4b6458d01fa9a96209f6b2a81af5af43be6 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Mon, 5 Dec 2022 14:55:51 +0100 Subject: [PATCH 07/23] enable dependabot --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..daec318 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "daily" From 1ba2392497c72544ac1657bd58510184628ee96c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Dec 2022 13:56:22 +0000 Subject: [PATCH 08/23] Bump plexus-utils from 2.0.6 to 3.5.0 Bumps [plexus-utils](https://github.com/codehaus-plexus/plexus-utils) from 2.0.6 to 3.5.0. - [Release notes](https://github.com/codehaus-plexus/plexus-utils/releases) - [Commits](https://github.com/codehaus-plexus/plexus-utils/commits/plexus-utils-3.5.0) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus-utils dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c020e22..0eddc5a 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ org.codehaus.plexus plexus-utils - 2.0.6 + 3.5.0 compile From d9679431553a4f517292267958c5ff60085f092a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Dec 2022 13:56:25 +0000 Subject: [PATCH 09/23] Bump jsonassert from 1.5.0 to 1.5.1 Bumps [jsonassert](https://github.com/skyscreamer/JSONassert) from 1.5.0 to 1.5.1. - [Release notes](https://github.com/skyscreamer/JSONassert/releases) - [Changelog](https://github.com/skyscreamer/JSONassert/blob/master/CHANGELOG.md) - [Commits](https://github.com/skyscreamer/JSONassert/compare/jsonassert-1.5.0...jsonassert-1.5.1) --- updated-dependencies: - dependency-name: org.skyscreamer:jsonassert dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0eddc5a..2cb9396 100644 --- a/pom.xml +++ b/pom.xml @@ -136,7 +136,7 @@ org.skyscreamer jsonassert - 1.5.0 + 1.5.1 test From 2b5850db54b8301829a582788e260b24683a4b56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Dec 2022 13:57:24 +0000 Subject: [PATCH 10/23] Bump org.apache.sling.commons.json from 2.0.18 to 2.0.20 Bumps org.apache.sling.commons.json from 2.0.18 to 2.0.20. --- updated-dependencies: - dependency-name: org.apache.sling:org.apache.sling.commons.json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2cb9396..1c4fb14 100644 --- a/pom.xml +++ b/pom.xml @@ -108,7 +108,7 @@ org.apache.sling org.apache.sling.commons.json - 2.0.18 + 2.0.20 compile From 0eacd3d3bd7b8d09e4eeebfa29b3d3851e1f3ba0 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Fri, 16 Dec 2022 16:08:49 +0100 Subject: [PATCH 11/23] Switch to Java 11 as minimum version. --- .github/workflows/maven-build.yml | 2 +- .github/workflows/maven-deploy.yml | 10 +++++----- .github/workflows/release-from-tag.yml | 2 +- changes.xml | 6 ++++++ pom.xml | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index eeae3b7..5952edc 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -20,7 +20,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - java: [8, 11, 17] + java: [11, 17] os: [ubuntu-latest] distribution: [temurin] include: diff --git a/.github/workflows/maven-deploy.yml b/.github/workflows/maven-deploy.yml index 96d6b65..aef0ee4 100644 --- a/.github/workflows/maven-deploy.yml +++ b/.github/workflows/maven-deploy.yml @@ -1,4 +1,4 @@ -# Deploy snapshots to Sonatpe OSS repository and deploy site to GitHub Pages +# Deploy snapshots to Sonatype OSS repository and deploy site to GitHub Pages name: Deploy @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Configure GIT run: | @@ -23,11 +23,11 @@ jobs: git config --global user.name "${{ secrets.GH_SITE_DEPLOY_NAME }}" - name: Setup JDK - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: distribution: temurin - java-version: 8 - cache: 'maven' + java-version: 11 + cache: maven - name: Build, verify, deploy, generate site env: diff --git a/.github/workflows/release-from-tag.yml b/.github/workflows/release-from-tag.yml index 10fcc49..f92367f 100644 --- a/.github/workflows/release-from-tag.yml +++ b/.github/workflows/release-from-tag.yml @@ -12,7 +12,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ncipollo/release-action@v1 with: body: 'Changes: https://wcm.io/tooling/maven/plugins/i18n-maven-plugin/changes-report.html' diff --git a/changes.xml b/changes.xml index 58736cf..d83a427 100644 --- a/changes.xml +++ b/changes.xml @@ -23,6 +23,12 @@ xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd"> + + + Switch to Java 11 as minimum version. + + + Declare Maven core dependencies as provided. diff --git a/pom.xml b/pom.xml index 1c4fb14..6ef0939 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ io.wcm.maven io.wcm.maven.parent - 2.0.4 + 2.1.0-SNAPSHOT From ee956c549eeb86ef4dfa12ed6ce521564e05477a Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 22 Dec 2022 15:59:55 +0100 Subject: [PATCH 12/23] switch issue management to GitHub --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20f9284..ffc5331 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Transforms and validates i18n resources for usage in Sling/AEM applications. Documentation: https://wcm.io/tooling/maven/plugins/i18n-maven-plugin/
-Issues: https://wcm-io.atlassian.net/browse/WTOOL
+Issues: https://github.com/wcm-io/io.wcm.maven.plugins.i18n-maven-plugin/issues
Wiki: https://wcm-io.atlassian.net/wiki/
Continuous Integration: https://github.com/wcm-io/io.wcm.maven.plugins.i18n-maven-plugin/actions
Commercial support: https://wcm.io/commercial-support.html From 93dc6bb9a9a9eb8b1e6f6e42ac6a1bada8a7a088 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 22 Dec 2022 16:40:46 +0100 Subject: [PATCH 13/23] fix integration test --- src/it/properties-to-xml/verify.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/it/properties-to-xml/verify.groovy b/src/it/properties-to-xml/verify.groovy index 2e5cbd8..f2e8be4 100644 --- a/src/it/properties-to-xml/verify.groovy +++ b/src/it/properties-to-xml/verify.groovy @@ -1,4 +1,4 @@ -import groovy.util.XmlSlurper +import groovy.xml.XmlSlurper File xmlFile = new File(basedir, "target/classes/SLING-INF/app-root/i18n/en.xml") assert xmlFile.exists(); From 1aa6d65a9c3060134b558e3873a1286dbe9b62d3 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Tue, 3 Jan 2023 10:09:03 +0100 Subject: [PATCH 14/23] switch to java 11 --- src/it/json-to-json/pom.xml | 3 +-- src/it/json-to-properties/pom.xml | 3 +-- src/it/properties-to-json/pom.xml | 3 +-- src/it/properties-to-xml/pom.xml | 3 +-- src/it/xml-to-json/pom.xml | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/it/json-to-json/pom.xml b/src/it/json-to-json/pom.xml index 14bd767..f97f542 100644 --- a/src/it/json-to-json/pom.xml +++ b/src/it/json-to-json/pom.xml @@ -35,8 +35,7 @@ - 1.8 - 8 + 11 diff --git a/src/it/json-to-properties/pom.xml b/src/it/json-to-properties/pom.xml index 89e0ea4..37e8162 100644 --- a/src/it/json-to-properties/pom.xml +++ b/src/it/json-to-properties/pom.xml @@ -35,8 +35,7 @@ - 1.8 - 8 + 11 diff --git a/src/it/properties-to-json/pom.xml b/src/it/properties-to-json/pom.xml index 120f01f..5d16d74 100644 --- a/src/it/properties-to-json/pom.xml +++ b/src/it/properties-to-json/pom.xml @@ -35,8 +35,7 @@ - 1.8 - 8 + 11 diff --git a/src/it/properties-to-xml/pom.xml b/src/it/properties-to-xml/pom.xml index 105f92a..5a52b96 100644 --- a/src/it/properties-to-xml/pom.xml +++ b/src/it/properties-to-xml/pom.xml @@ -35,8 +35,7 @@ - 1.8 - 8 + 11 diff --git a/src/it/xml-to-json/pom.xml b/src/it/xml-to-json/pom.xml index a934552..f366705 100644 --- a/src/it/xml-to-json/pom.xml +++ b/src/it/xml-to-json/pom.xml @@ -35,8 +35,7 @@ - 1.8 - 8 + 11 From a70381cd1fce91e5af8b94380bbbf694de3c9d84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jan 2023 17:58:09 +0000 Subject: [PATCH 15/23] Bump xmlunit-legacy from 2.9.0 to 2.9.1 Bumps [xmlunit-legacy](https://github.com/xmlunit/xmlunit) from 2.9.0 to 2.9.1. - [Release notes](https://github.com/xmlunit/xmlunit/releases) - [Changelog](https://github.com/xmlunit/xmlunit/blob/main/RELEASE_NOTES.md) - [Commits](https://github.com/xmlunit/xmlunit/compare/v2.9.0...v2.9.1) --- updated-dependencies: - dependency-name: org.xmlunit:xmlunit-legacy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6ef0939..15a336a 100644 --- a/pom.xml +++ b/pom.xml @@ -148,7 +148,7 @@ org.xmlunit xmlunit-legacy - 2.9.0 + 2.9.1 test From 28e3c4e02380b97f0517b07eaa9ee40040bd7d43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jan 2023 17:58:15 +0000 Subject: [PATCH 16/23] Bump xmlunit-core from 2.9.0 to 2.9.1 Bumps [xmlunit-core](https://github.com/xmlunit/xmlunit) from 2.9.0 to 2.9.1. - [Release notes](https://github.com/xmlunit/xmlunit/releases) - [Changelog](https://github.com/xmlunit/xmlunit/blob/main/RELEASE_NOTES.md) - [Commits](https://github.com/xmlunit/xmlunit/compare/v2.9.0...v2.9.1) --- updated-dependencies: - dependency-name: org.xmlunit:xmlunit-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 15a336a..34bf663 100644 --- a/pom.xml +++ b/pom.xml @@ -142,7 +142,7 @@ org.xmlunit xmlunit-core - 2.9.0 + 2.9.1 test From 7cfa105900e706babad3ea97fbffe4eedef0c072 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 12 Jan 2023 10:43:00 +0100 Subject: [PATCH 17/23] update dependency --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 34bf663..b2e2fe2 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ io.wcm.maven io.wcm.maven.parent - 2.1.0-SNAPSHOT + 2.1.0 From 49e9dc38c75ef369f123c9692292ffca4917bee8 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Fri, 20 Jan 2023 09:06:00 +0100 Subject: [PATCH 18/23] eliminate code warning --- src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java b/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java index b3ceaf5..f8f9d94 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java @@ -180,7 +180,6 @@ private void addResource(String generatedResourcesDirectory, String targetPath) * @param sourceDirectory Source directory * @return a list of XML files */ - @SuppressWarnings("unchecked") private List getI18nSourceFiles(File sourceDirectory) throws IOException { if (i18nSourceFiles == null) { From 1ac23c4deb729cde1c3d41fb1926fd68d839795c Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Fri, 20 Jan 2023 09:58:23 +0100 Subject: [PATCH 19/23] Switch from org.apache.sling.commons.json to Johnzon (javax.json). --- changes.xml | 5 +- pom.xml | 12 ++- .../io/wcm/maven/plugins/i18n/JsonUtil.java | 80 +++++++++++++++++++ .../wcm/maven/plugins/i18n/SlingI18nMap.java | 44 +++++----- .../wcm/maven/plugins/i18n/TransformMojo.java | 5 +- .../plugins/i18n/readers/JsonI18nReader.java | 42 +++++----- .../wcm/maven/plugins/i18n/JsonUtilTest.java | 65 +++++++++++++++ 7 files changed, 204 insertions(+), 49 deletions(-) create mode 100644 src/main/java/io/wcm/maven/plugins/i18n/JsonUtil.java create mode 100644 src/test/java/io/wcm/maven/plugins/i18n/JsonUtilTest.java diff --git a/changes.xml b/changes.xml index d83a427..c578464 100644 --- a/changes.xml +++ b/changes.xml @@ -23,7 +23,10 @@ xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd"> - + + + Switch from org.apache.sling.commons.json to Johnzon (javax.json). + Switch to Java 11 as minimum version. diff --git a/pom.xml b/pom.xml index b2e2fe2..fb1ec4a 100644 --- a/pom.xml +++ b/pom.xml @@ -106,9 +106,15 @@ compile - org.apache.sling - org.apache.sling.commons.json - 2.0.20 + org.apache.geronimo.specs + geronimo-json_1.1_spec + 1.5 + compile + + + org.apache.johnzon + johnzon-core + 1.2.19 compile diff --git a/src/main/java/io/wcm/maven/plugins/i18n/JsonUtil.java b/src/main/java/io/wcm/maven/plugins/i18n/JsonUtil.java new file mode 100644 index 0000000..577f9c0 --- /dev/null +++ b/src/main/java/io/wcm/maven/plugins/i18n/JsonUtil.java @@ -0,0 +1,80 @@ +/* + * #%L + * wcm.io + * %% + * Copyright (C) 2023 wcm.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package io.wcm.maven.plugins.i18n; + +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.Map; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.json.JsonReader; +import javax.json.JsonReaderFactory; +import javax.json.JsonWriter; +import javax.json.JsonWriterFactory; +import javax.json.stream.JsonGenerator; +import javax.json.stream.JsonParsingException; + +/** + * Helper methods for JSON handling. + */ +public final class JsonUtil { + + private static final JsonWriterFactory JSON_WRITER_FACTORY = Json.createWriterFactory(Map.of( + JsonGenerator.PRETTY_PRINTING, true)); + + private static final JsonReaderFactory JSON_READER_FACTORY = Json.createReaderFactory(Map.of( + "org.apache.johnzon.supports-comments", true)); + + private JsonUtil() { + // static methods only + } + + /** + * Serialize JSON object to String. + * @param jsonObject JSON object + * @return String + */ + public static String toString(JsonObject jsonObject) { + StringWriter writer = new StringWriter(); + try (JsonWriter jsonWriter = JSON_WRITER_FACTORY.createWriter(writer)) { + jsonWriter.write(jsonObject); + return writer.toString(); + } + } + + /** + * Parse JSON string to JSON object. + * @param jsonString JSON string + * @return JSON object + * @throws IOException if JSON parsing fails + */ + public static JsonObject fromString(String jsonString) throws IOException { + StringReader reader = new StringReader(jsonString); + try (JsonReader jsonReader = JSON_READER_FACTORY.createReader(reader)) { + return jsonReader.readObject(); + } + catch (JsonParsingException ex) { + throw new IOException(ex.getMessage(), ex); + } + } + +} diff --git a/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java b/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java index b610f3c..3daa3c3 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java @@ -30,9 +30,11 @@ import java.util.SortedMap; import java.util.TreeMap; +import javax.json.Json; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; + import org.apache.commons.lang3.StringUtils; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.JSONObject; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.Namespace; @@ -74,57 +76,57 @@ class SlingI18nMap { * Build i18n resource JSON in Sling i18n Message format. * @return JSON */ - public String getI18nJsonString() throws JSONException { - return buildI18nJson().toString(2); + public String getI18nJsonString() { + return JsonUtil.toString(buildI18nJson()); } - private JSONObject buildI18nJson() throws JSONException { + private JsonObject buildI18nJson() { // get root - JSONObject jsonDocument = getMixLanguageJsonDocument(); + JsonObjectBuilder jsonDocument = getMixLanguageJsonDocument(); // add entries for (Entry entry : properties.entrySet()) { String key = entry.getKey(); String escapedKey = validName(key); - JSONObject value = getJsonI18nValue(key, entry.getValue(), !StringUtils.equals(key, escapedKey)); + JsonObject value = getJsonI18nValue(key, entry.getValue(), !StringUtils.equals(key, escapedKey)); - jsonDocument.put(escapedKey, value); + jsonDocument.add(escapedKey, value); } // return result - return jsonDocument; + return jsonDocument.build(); } - private JSONObject getMixLanguageJsonDocument() throws JSONException { - JSONObject root = new JSONObject(); + private JsonObjectBuilder getMixLanguageJsonDocument() { + JsonObjectBuilder root = Json.createObjectBuilder(); // add boiler plate - root.put("jcr:" + JCR_PRIMARY_TYPE, JCR_NODETYPE_FOLDER); - root.put("jcr:" + JCR_MIXIN_TYPES, JCR_MIX_LANGUAGE); + root.add("jcr:" + JCR_PRIMARY_TYPE, JCR_NODETYPE_FOLDER); + root.add("jcr:" + JCR_MIXIN_TYPES, Json.createArrayBuilder(JCR_MIX_LANGUAGE).build()); // add language - root.put("jcr:" + JCR_LANGUAGE, languageKey); + root.add("jcr:" + JCR_LANGUAGE, languageKey); return root; } - private JSONObject getJsonI18nValue(String key, String value, boolean generatedKeyProperty) throws JSONException { - JSONObject valueNode = new JSONObject(); + private JsonObject getJsonI18nValue(String key, String value, boolean generatedKeyProperty) { + JsonObjectBuilder valueNode = Json.createObjectBuilder(); // add boiler plate - valueNode.put("jcr:" + JCR_PRIMARY_TYPE, JCR_NODETYPE_FOLDER); - valueNode.put("jcr:" + JCR_MIXIN_TYPES, SLING_MESSAGE_MIXIN_TYPE); + valueNode.add("jcr:" + JCR_PRIMARY_TYPE, JCR_NODETYPE_FOLDER); + valueNode.add("jcr:" + JCR_MIXIN_TYPES, Json.createArrayBuilder(SLING_MESSAGE_MIXIN_TYPE).build()); // add extra key attribute if (generatedKeyProperty) { - valueNode.put("sling:" + SLING_KEY, key); + valueNode.add("sling:" + SLING_KEY, key); } // add actual i18n value - valueNode.put("sling:" + SLING_MESSAGE, value); + valueNode.add("sling:" + SLING_MESSAGE, value); - return valueNode; + return valueNode.build(); } /** diff --git a/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java b/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java index f8f9d94..ae71429 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java @@ -36,7 +36,6 @@ import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import org.apache.sling.commons.json.JSONException; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.Scanner; import org.sonatype.plexus.build.incremental.BuildContext; @@ -119,7 +118,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Transformed " + file.getPath() + " to " + targetFile.getPath()); } - catch (IOException | JSONException ex) { + catch (IOException ex) { throw new MojoFailureException("Unable to transform i18n resource: " + file.getPath(), ex); } } @@ -216,7 +215,7 @@ private File getSourceDirectory() throws IOException { * @param targetfile target file * @param selectedOutputFormat Output format */ - private void writeTargetI18nFile(SlingI18nMap i18nMap, File targetfile, OutputFormat selectedOutputFormat) throws IOException, JSONException { + private void writeTargetI18nFile(SlingI18nMap i18nMap, File targetfile, OutputFormat selectedOutputFormat) throws IOException { if (selectedOutputFormat == OutputFormat.XML) { FileUtils.fileWrite(targetfile, StandardCharsets.UTF_8.name(), i18nMap.getI18nXmlString()); } diff --git a/src/main/java/io/wcm/maven/plugins/i18n/readers/JsonI18nReader.java b/src/main/java/io/wcm/maven/plugins/i18n/readers/JsonI18nReader.java index f29764c..2f087d2 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/readers/JsonI18nReader.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/readers/JsonI18nReader.java @@ -25,10 +25,12 @@ import java.util.HashMap; import java.util.Map; +import javax.json.JsonObject; +import javax.json.JsonValue; + import org.apache.commons.io.IOUtils; -import org.apache.sling.commons.json.JSONArray; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.JSONObject; + +import io.wcm.maven.plugins.i18n.JsonUtil; /** * Reads i18n resources from JSON files. @@ -37,34 +39,32 @@ public class JsonI18nReader implements I18nReader { @Override public Map read(File sourceFile) throws IOException { + String fileContent = IOUtils.toString(sourceFile.toURI().toURL(), StandardCharsets.UTF_8); try { - JSONObject root = new JSONObject(fileContent); + JsonObject root = JsonUtil.fromString(fileContent); Map map = new HashMap<>(); parseJson(root, map, ""); return map; } - catch (JSONException ex) { + catch (IOException ex) { throw new IOException("Unable to read JSON from " + sourceFile.getAbsolutePath(), ex); } } - private void parseJson(JSONObject node, Map map, String prefix) throws IOException, JSONException { - JSONArray names = node.names(); - if (names == null) { - return; - } - for (int i = 0; i < names.length(); i++) { - String key = names.getString(i); - Object item = node.get(key); - if (item instanceof JSONObject) { - parseJson((JSONObject)item, map, prefix + key + "."); - } - else if (item instanceof String) { - map.put(prefix + key, (String)item); - } - else { - throw new IOException("Unsupported JSON value: " + item.getClass().getName()); + private void parseJson(JsonObject node, Map map, String prefix) throws IOException { + for (Map.Entry entry : node.entrySet()) { + String key = entry.getKey(); + JsonValue value = entry.getValue(); + switch (value.getValueType()) { + case OBJECT: + parseJson(value.asJsonObject(), map, prefix + key + "."); + break; + case STRING: + map.put(prefix + key, node.getString(key)); + break; + default: + throw new IOException("Unsupported JSON value: " + node.getValueType()); } } } diff --git a/src/test/java/io/wcm/maven/plugins/i18n/JsonUtilTest.java b/src/test/java/io/wcm/maven/plugins/i18n/JsonUtilTest.java new file mode 100644 index 0000000..f2e78f2 --- /dev/null +++ b/src/test/java/io/wcm/maven/plugins/i18n/JsonUtilTest.java @@ -0,0 +1,65 @@ +/* + * #%L + * wcm.io + * %% + * Copyright (C) 2023 wcm.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package io.wcm.maven.plugins.i18n; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.IOException; + +import javax.json.Json; +import javax.json.JsonObject; + +import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; + + +class JsonUtilTest { + + static final String JSON_STRING = "{\"key1\":\"value1\",\"key2\":55}"; + + @Test + void testToString() throws Exception { + JsonObject jsonObject = Json.createObjectBuilder() + .add("key1", "value1") + .add("key2", 55) + .build(); + JSONAssert.assertEquals(JSON_STRING, JsonUtil.toString(jsonObject), true); + } + + @Test + void testFromString() throws Exception { + JsonObject jsonObject = JsonUtil.fromString(JSON_STRING); + JSONAssert.assertEquals(JSON_STRING, JsonUtil.toString(jsonObject), true); + } + + @Test + void testFromString_WithComment() throws Exception { + JsonObject jsonObject = JsonUtil.fromString("/* Comment before */\n" + JSON_STRING); + JSONAssert.assertEquals(JSON_STRING, JsonUtil.toString(jsonObject), true); + } + + @Test + void testFromString_Invalid() { + assertThrows(IOException.class, () -> { + JsonUtil.fromString("{..."); + }); + } + +} From 9983fe438a82dedb10a9884bf192e56300e2974d Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Mon, 23 Jan 2023 10:04:48 +0100 Subject: [PATCH 20/23] Introduce new output format JSON_PROPERTIES (#9) --- changes.xml | 3 + .../invoker.properties | 1 + src/it/json-to-json-properties/pom.xml | 92 +++++++++++++++++++ .../src/main/resources/i18n/en.json | 8 ++ src/it/json-to-json-properties/verify.groovy | 11 +++ .../wcm/maven/plugins/i18n/OutputFormat.java | 21 +++-- .../wcm/maven/plugins/i18n/SlingI18nMap.java | 22 +++++ .../wcm/maven/plugins/i18n/TransformMojo.java | 34 +++++-- .../maven/plugins/i18n/SlingI18nMapTest.java | 5 + src/test/resources/map/i18n-properties.json | 6 ++ 10 files changed, 187 insertions(+), 16 deletions(-) create mode 100644 src/it/json-to-json-properties/invoker.properties create mode 100644 src/it/json-to-json-properties/pom.xml create mode 100644 src/it/json-to-json-properties/src/main/resources/i18n/en.json create mode 100644 src/it/json-to-json-properties/verify.groovy create mode 100644 src/test/resources/map/i18n-properties.json diff --git a/changes.xml b/changes.xml index c578464..3312df2 100644 --- a/changes.xml +++ b/changes.xml @@ -24,6 +24,9 @@ + + Introduce new output format JSON_PROPERTIES: Flat list of key/value pairs in JSON format. + Switch from org.apache.sling.commons.json to Johnzon (javax.json). diff --git a/src/it/json-to-json-properties/invoker.properties b/src/it/json-to-json-properties/invoker.properties new file mode 100644 index 0000000..e2a44e3 --- /dev/null +++ b/src/it/json-to-json-properties/invoker.properties @@ -0,0 +1 @@ +invoker.goals = clean verify diff --git a/src/it/json-to-json-properties/pom.xml b/src/it/json-to-json-properties/pom.xml new file mode 100644 index 0000000..727f599 --- /dev/null +++ b/src/it/json-to-json-properties/pom.xml @@ -0,0 +1,92 @@ + + + + + 4.0.0 + + + io.wcm.maven + io.wcm.maven.aem-global-parent + 2.0.0 + + + + io.wcm.maven.plugins.it + i18n-maven-plugin-json-to-json + 1.0.0-SNAPSHOT + + + + 11 + + + + + + src/main/resources + false + + + i18n/** + + + + + + + biz.aQute.bnd + bnd-maven-plugin + + + Sling-Initial-Content: SLING-INF/app-root;overwrite:=true;ignoreImportProviders:=xml;path:=/apps/integration-test + + + + + org.apache.maven.plugins + maven-jar-plugin + + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + + + @project.groupId@ + @project.artifactId@ + @project.version@ + + + + transform + + + json_properties + + + + + + + + + diff --git a/src/it/json-to-json-properties/src/main/resources/i18n/en.json b/src/it/json-to-json-properties/src/main/resources/i18n/en.json new file mode 100644 index 0000000..a5cb8ca --- /dev/null +++ b/src/it/json-to-json-properties/src/main/resources/i18n/en.json @@ -0,0 +1,8 @@ +{ + "key1": "value1", + "key21": { + "key22": { + "key23": "value 2" + } + } +} diff --git a/src/it/json-to-json-properties/verify.groovy b/src/it/json-to-json-properties/verify.groovy new file mode 100644 index 0000000..033df14 --- /dev/null +++ b/src/it/json-to-json-properties/verify.groovy @@ -0,0 +1,11 @@ +import groovy.json.JsonSlurper + +File jsonFile = new File(basedir, "target/classes/SLING-INF/app-root/i18n/en.json") +assert jsonFile.exists(); + +def json = new JsonSlurper().parseText(jsonFile.getText("utf-8")) + +assert json["key1"] == "value1" +assert json["key21.key22.key23"] == "value 2" + +return true; diff --git a/src/main/java/io/wcm/maven/plugins/i18n/OutputFormat.java b/src/main/java/io/wcm/maven/plugins/i18n/OutputFormat.java index c383f19..1dcc5e9 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/OutputFormat.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/OutputFormat.java @@ -19,8 +19,6 @@ */ package io.wcm.maven.plugins.i18n; -import org.apache.commons.lang3.StringUtils; - /** * Output format for Sling i18n message file. */ @@ -29,23 +27,34 @@ enum OutputFormat { /** * JCR JSON */ - JSON, + JSON("json"), + + /** + * Flat list of properties in JSON format. + */ + JSON_PROPERTIES("json"), /** * JCR XML */ - XML, + XML("xml"), /** * PROPERTIES */ - PROPERTIES; + PROPERTIES("properties"); + + private final String fileExtension; + + OutputFormat(String fileExtension) { + this.fileExtension = fileExtension; + } /** * @return File extension */ public String getFileExtension() { - return StringUtils.lowerCase(this.name()); + return this.fileExtension; } } diff --git a/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java b/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java index 3daa3c3..af10059 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/SlingI18nMap.java @@ -80,6 +80,14 @@ public String getI18nJsonString() { return JsonUtil.toString(buildI18nJson()); } + /** + * Build i18n resource JSON in Sling i18n Message format. + * @return JSON + */ + public String getI18nJsonPropertiesString() { + return JsonUtil.toString(buildI18nJsonProperties()); + } + private JsonObject buildI18nJson() { // get root @@ -98,6 +106,20 @@ private JsonObject buildI18nJson() { return jsonDocument.build(); } + private JsonObject buildI18nJsonProperties() { + JsonObjectBuilder jsonDocument = Json.createObjectBuilder(); + + // add entries + for (Entry entry : properties.entrySet()) { + String key = entry.getKey(); + String escapedKey = validName(key); + jsonDocument.add(escapedKey, entry.getValue()); + } + + // return result + return jsonDocument.build(); + } + private JsonObjectBuilder getMixLanguageJsonDocument() { JsonObjectBuilder root = Json.createObjectBuilder(); diff --git a/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java b/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java index ae71429..476279e 100644 --- a/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java +++ b/src/main/java/io/wcm/maven/plugins/i18n/TransformMojo.java @@ -75,9 +75,15 @@ public class TransformMojo extends AbstractMojo { private String target; /** - * Output format for i18n: json, xml or properties. + * Output format. Possible values: + *
    + *
  • JSON: Sling Message format serialized as JSON.
  • + *
  • JSON_PROPERTIES: Flat list of key/value pairs in JSON format.
  • + *
  • XML: Sling Message format serialized as JCR XML.
  • + *
  • PROPERTIES: Flat list of key/value pairs in Java Properties format.
  • + *
*/ - @Parameter(defaultValue = "json") + @Parameter(defaultValue = "JSON") private String outputFormat; @Parameter(defaultValue = "generated-i18n-resources") @@ -216,14 +222,22 @@ private File getSourceDirectory() throws IOException { * @param selectedOutputFormat Output format */ private void writeTargetI18nFile(SlingI18nMap i18nMap, File targetfile, OutputFormat selectedOutputFormat) throws IOException { - if (selectedOutputFormat == OutputFormat.XML) { - FileUtils.fileWrite(targetfile, StandardCharsets.UTF_8.name(), i18nMap.getI18nXmlString()); - } - else if (selectedOutputFormat == OutputFormat.PROPERTIES) { - FileUtils.fileWrite(targetfile, StandardCharsets.ISO_8859_1.name(), i18nMap.getI18nPropertiesString()); - } - else { - FileUtils.fileWrite(targetfile, StandardCharsets.UTF_8.name(), i18nMap.getI18nJsonString()); + switch (selectedOutputFormat) { + case XML: + FileUtils.fileWrite(targetfile, StandardCharsets.UTF_8.name(), i18nMap.getI18nXmlString()); + break; + case PROPERTIES: + FileUtils.fileWrite(targetfile, StandardCharsets.ISO_8859_1.name(), i18nMap.getI18nPropertiesString()); + break; + case JSON: + FileUtils.fileWrite(targetfile, StandardCharsets.UTF_8.name(), i18nMap.getI18nJsonString()); + break; + case JSON_PROPERTIES: + FileUtils.fileWrite(targetfile, StandardCharsets.UTF_8.name(), i18nMap.getI18nJsonPropertiesString()); + break; + default: + throw new IllegalArgumentException("Unsupported ouptut format: " + selectedOutputFormat); + } buildContext.refresh(targetfile); } diff --git a/src/test/java/io/wcm/maven/plugins/i18n/SlingI18nMapTest.java b/src/test/java/io/wcm/maven/plugins/i18n/SlingI18nMapTest.java index 974daeb..bad7485 100644 --- a/src/test/java/io/wcm/maven/plugins/i18n/SlingI18nMapTest.java +++ b/src/test/java/io/wcm/maven/plugins/i18n/SlingI18nMapTest.java @@ -56,6 +56,11 @@ void testGetI18nJsonString() throws Exception { JSONAssert.assertEquals(getStringFromClasspath("map/i18n-content.json"), underTest.getI18nJsonString(), true); } + @Test + void testGetI18nJsonPropertiesString() throws Exception { + JSONAssert.assertEquals(getStringFromClasspath("map/i18n-properties.json"), underTest.getI18nJsonPropertiesString(), true); + } + @Test void testGetI18nXmlString() throws Exception { XMLAssert.assertXMLEqual(getStringFromClasspath("map/i18n-content.xml"), underTest.getI18nXmlString()); diff --git a/src/test/resources/map/i18n-properties.json b/src/test/resources/map/i18n-properties.json new file mode 100644 index 0000000..12c0b38 --- /dev/null +++ b/src/test/resources/map/i18n-properties.json @@ -0,0 +1,6 @@ +{ + "key1": "value1", + "key2.key21.key211": "value2", + "key3-with-special-chars-aeoeuess-": "value3", + "key4": "value4 äöü߀" +} From 4abc99c01ab5ad9893fb6ec8fa0e36913b81bdef Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Mon, 23 Jan 2023 10:07:17 +0100 Subject: [PATCH 21/23] update changelog --- changes.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changes.xml b/changes.xml index 3312df2..8a26b86 100644 --- a/changes.xml +++ b/changes.xml @@ -27,7 +27,7 @@ Introduce new output format JSON_PROPERTIES: Flat list of key/value pairs in JSON format. - + Switch from org.apache.sling.commons.json to Johnzon (javax.json). From 6c55da87d6deb6b51303b2078c63831699bd1db5 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Wed, 25 Jan 2023 13:30:59 +0100 Subject: [PATCH 22/23] prepare release --- changes.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changes.xml b/changes.xml index 8a26b86..24c6ddc 100644 --- a/changes.xml +++ b/changes.xml @@ -23,7 +23,7 @@ xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd"> - + Introduce new output format JSON_PROPERTIES: Flat list of key/value pairs in JSON format. From 95c5c202aebc11ddf82206e41b595556fdfe08a0 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 26 Jan 2023 10:06:50 +0100 Subject: [PATCH 23/23] [gitflow-maven-plugin] Update versions for release 1.3.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index fb1ec4a..b17171e 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ io.wcm.maven.plugins i18n-maven-plugin - 1.2.3-SNAPSHOT + 1.3.0 maven-plugin i18n Maven Plugin @@ -50,7 +50,7 @@ 3.0.5 - 2022-01-27T09:11:46Z + 2023-01-26T09:06:49Z invoker.mavenOpts