diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
index f40c8859..66dca3de 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-build.yml
@@ -35,7 +35,7 @@ jobs:
uses: actions/checkout@v4
- name: Setup JDK
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
diff --git a/.github/workflows/maven-deploy.yml b/.github/workflows/maven-deploy.yml
index 83c03ac8..10214d48 100644
--- a/.github/workflows/maven-deploy.yml
+++ b/.github/workflows/maven-deploy.yml
@@ -25,7 +25,7 @@ jobs:
git config --global user.name "${{ secrets.GH_SITE_DEPLOY_NAME }}"
- name: Setup JDK
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 11
diff --git a/changes.xml b/changes.xml
index 471ab225..8495ac66 100644
--- a/changes.xml
+++ b/changes.xml
@@ -23,6 +23,18 @@
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 https://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd">
+
+
+ Switch frontend to ES6 modules.
+
+
+ Update to AEM 6.5 SP20.
+
+
+ Update dependencies.
+
+
+
Update to Handler 2.x.
diff --git a/pom.xml b/pom.xml
index 84e01e73..377aa779 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
io.wcm.maven.archetypes
io.wcm.maven.archetypes.aem
- 3.8.8
+ 3.8.10
maven-archetype
wcm.io Maven Archetype for AEM
@@ -40,7 +40,7 @@
tooling/maven/archetypes/aem
-
+
3.1.0
@@ -125,6 +125,10 @@
org.apache.maven.plugins
maven-archetype-plugin
${maven.archetype.version}
+
+
+ false
+
diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml b/src/main/resources/META-INF/maven/archetype-metadata.xml
index 1ef7d39a..b5af4743 100644
--- a/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -176,7 +176,7 @@
README.md
- clientlib.config.js
+ clientlib.config.cjs
package.json
src\index.*
diff --git a/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml b/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml
index 468ed07f..4cddb476 100644
--- a/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml
+++ b/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml
@@ -14,7 +14,7 @@ files:
#if ( $optionAemVersion == '6.5' && $optionAemServicePack == 'y' )
# AEM Service Pack
-- url: mvn:adobe.binary.aem.65.servicepack/aem-service-pkg/6.5.19.0/zip
+- url: mvn:adobe.binary.aem.65.servicepack/aem-service-pkg/6.5.20.0/zip
dir: packages
modelOptions:
delayAfterInstallSec: 30
diff --git a/src/main/resources/archetype-resources/frontend/.nvmrc b/src/main/resources/archetype-resources/frontend/.nvmrc
index 6f0223c1..2efc7e11 100644
--- a/src/main/resources/archetype-resources/frontend/.nvmrc
+++ b/src/main/resources/archetype-resources/frontend/.nvmrc
@@ -1 +1 @@
-v16.15.0
\ No newline at end of file
+v20.11.1
\ No newline at end of file
diff --git a/src/main/resources/archetype-resources/frontend/clientlib.config.js b/src/main/resources/archetype-resources/frontend/clientlib.config.cjs
similarity index 100%
rename from src/main/resources/archetype-resources/frontend/clientlib.config.js
rename to src/main/resources/archetype-resources/frontend/clientlib.config.cjs
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js
index 6c7d7686..2fe1a508 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js
@@ -1,9 +1,9 @@
import path from "path";
-import merge from "webpack-merge";
+import { merge } from "webpack-merge";
-import { pathConfig } from "../../path.config";
-import { entry, output } from "./setup";
-import { clean, es6, scss, handlebars, html, copy } from "./tasks";
+import { pathConfig } from "../../path.config.js";
+import { entry, output } from "./setup/index.js";
+import { clean, es6, scss, handlebars, html, copy } from "./tasks/index.js";
export const baseConfig = merge(clean, es6, scss, handlebars, html, copy, {
entry,
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js
index 5a2ccbf3..2df1f40f 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js
@@ -1,2 +1,2 @@
-export * from "./entryConfig";
-export * from "./outputConfig";
+export * from "./entryConfig.js";
+export * from "./outputConfig.js";
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js
index 4f88bd5e..6c2495aa 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js
@@ -1,5 +1,5 @@
import path from "path";
-import { pathConfig } from "../../../path.config";
+import { pathConfig } from "../../../path.config.js";
export const output = {
path: path.resolve(pathConfig.paths.target),
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js
index f903f89f..1f3b07ae 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js
@@ -1,6 +1,6 @@
import path from "path";
import { CleanWebpackPlugin } from "clean-webpack-plugin";
-import { pathConfig } from "../../../path.config";
+import { pathConfig } from "../../../path.config.js";
const pathsToClean = [pathConfig.paths.target];
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js
index 51d0cfbe..f768c6d2 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js
@@ -1,6 +1,6 @@
import path from "path";
import CopyWebpackPlugin from "copy-webpack-plugin";
-import { pathConfig } from "../../../path.config";
+import { pathConfig } from "../../../path.config.js";
export const copy = {
plugins: [
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js
index fc7ef352..07b33872 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js
@@ -1,5 +1,5 @@
import path from "path";
-import { pathConfig } from "../../../path.config";
+import { pathConfig } from "../../../path.config.js";
export const handlebars = {
module: {
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js
index d281aff4..5ea85289 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js
@@ -1,6 +1,6 @@
-export * from "./es6";
-export * from "./handlebars";
-export * from "./scss";
-export * from "./html";
-export * from "./clean";
-export * from "./copy";
+export * from "./es6.js";
+export * from "./handlebars.js";
+export * from "./scss.js";
+export * from "./html.js";
+export * from "./clean.js";
+export * from "./copy.js";
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js
index 9d9a7d18..af12c8c3 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js
@@ -1,5 +1,5 @@
import MiniCssExtractPlugin from "mini-css-extract-plugin";
-import { pathConfig } from "../../../path.config";
+import { pathConfig } from "../../../path.config.js";
export const scss = {
plugins: [
diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js
index 6b14b7e1..9309bfea 100644
--- a/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js
+++ b/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js
@@ -1,7 +1,7 @@
-import webpackMerge from "webpack-merge";
-import { devServer } from "./server";
+import { merge } from "webpack-merge";
+import { devServer } from "./server.js";
-export const devConfig = webpackMerge(devServer, {
+export const devConfig = merge(devServer, {
devtool: "source-map",
bail: true
});
diff --git a/src/main/resources/archetype-resources/frontend/package.json b/src/main/resources/archetype-resources/frontend/package.json
index 8b71e081..da183cd3 100644
--- a/src/main/resources/archetype-resources/frontend/package.json
+++ b/src/main/resources/archetype-resources/frontend/package.json
@@ -4,11 +4,12 @@
"version": "1.0.0",
"description": "Frontend build pipeline for AEM projects",
"main": "index.js",
+ "type": "module",
"scripts": {
"start": "webpack-dev-server --mode development --open",
"build:dev": "webpack --mode development",
"build:prod": "webpack --mode production",
- "build:clientlibs": "npm run build:prod && clientlib"
+ "build:clientlibs": "npm run build:prod && clientlib clientlib.config.cjs"
},
"dependencies": {
"bootstrap": "4.6.2",
@@ -17,25 +18,25 @@
},
"devDependencies": {
"aem-clientlib-generator": "1.8.0",
- "@babel/core": "7.23.6",
+ "@babel/core": "7.24.1",
"babel-loader": "9.1.3",
"babel-plugin-transform-class-properties": "6.24.1",
"babel-plugin-transform-es2015-arrow-functions": "6.22.0",
- "@babel/preset-env": "7.23.6",
- "@babel/register": "7.22.15",
+ "@babel/preset-env": "7.24.1",
+ "@babel/register": "7.23.7",
"clean-webpack-plugin": "4.0.0",
- "copy-webpack-plugin": "11.0.0",
- "css-loader": "6.8.1",
+ "copy-webpack-plugin": "12.0.2",
+ "css-loader": "6.10.0",
"handlebars": "4.7.8",
"handlebars-loader": "1.7.3",
"html-webpack-plugin": "5.6.0",
- "mini-css-extract-plugin": "2.7.6",
+ "mini-css-extract-plugin": "2.8.1",
"node-sass": "9.0.0",
- "postcss-loader": "7.3.3",
- "sass-loader": "13.3.2",
- "webpack": "5.89.0",
- "webpack-cli": "4.10.0",
- "webpack-dev-server": "4.15.1",
+ "postcss-loader": "8.1.1",
+ "sass-loader": "14.1.1",
+ "webpack": "5.90.3",
+ "webpack-cli": "5.1.4",
+ "webpack-dev-server": "5.0.4",
"webpack-merge": "5.10.0"
}
}
diff --git a/src/main/resources/archetype-resources/frontend/pom.xml b/src/main/resources/archetype-resources/frontend/pom.xml
index 3d1b4667..555bd531 100644
--- a/src/main/resources/archetype-resources/frontend/pom.xml
+++ b/src/main/resources/archetype-resources/frontend/pom.xml
@@ -1,8 +1,7 @@
4.0.0
-#set( $nodeJsVersion = "20.9.0" )
-#set( $npmVersion = "10.1.0" )
+#set( $nodeJsVersion = "20.11.1" )
${groupId}
@@ -76,8 +75,6 @@
process-resources
v${nodeJsVersion}
-## Explicitly define NPM version for frontend-maven-plugin to avoid build problems on Jenkins
- ${npmVersion}
diff --git a/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js b/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js
index 3f20c2f5..987a0ad2 100644
--- a/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js
+++ b/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js
@@ -1,5 +1,5 @@
import $ from "jquery";
-import "bootstrap/js/dist/carousel";
+import "bootstrap/js/dist/carousel.js";
export default () => {
$(".carousel").carousel();
diff --git a/src/main/resources/archetype-resources/frontend/src/index.js b/src/main/resources/archetype-resources/frontend/src/index.js
index 5f95bbe4..759393ee 100644
--- a/src/main/resources/archetype-resources/frontend/src/index.js
+++ b/src/main/resources/archetype-resources/frontend/src/index.js
@@ -1,5 +1,5 @@
import $ from "jquery";
-import CustomCarousel from "./components/customcarousel/customcarousel";
+import CustomCarousel from "./components/customcarousel/customcarousel.js";
// Document Ready
$(() => {
diff --git a/src/main/resources/archetype-resources/frontend/webpack.config.babel.js b/src/main/resources/archetype-resources/frontend/webpack.config.babel.js
index c3a3a6a8..0d023348 100644
--- a/src/main/resources/archetype-resources/frontend/webpack.config.babel.js
+++ b/src/main/resources/archetype-resources/frontend/webpack.config.babel.js
@@ -1,8 +1,8 @@
-import webpackMerge from "webpack-merge";
+import { merge } from "webpack-merge";
-import { baseConfig } from "./config/webpack/base";
-import { devConfig } from "./config/webpack/dev";
-import { prodConfig } from "./config/webpack/prod";
+import { baseConfig } from "./config/webpack/base/index.js";
+import { devConfig } from "./config/webpack/dev/index.js";
+import { prodConfig } from "./config/webpack/prod/index.js";
/**
* Get the configuration file based on webpacks `mode` parameter.
@@ -27,5 +27,5 @@ export default (_, argv) => {
const runMode = argv.mode ? argv.mode : "production";
const runModeConfig = getConfig(runMode);
- return webpackMerge(baseConfig, runModeConfig);
+ return merge(baseConfig, runModeConfig);
};
diff --git a/src/main/resources/archetype-resources/parent/pom.xml b/src/main/resources/archetype-resources/parent/pom.xml
index 8fc0300a..db0845ba 100644
--- a/src/main/resources/archetype-resources/parent/pom.xml
+++ b/src/main/resources/archetype-resources/parent/pom.xml
@@ -35,7 +35,7 @@
2.23.4
#end
#if( $optionAcsCommons == "y" )
- 6.3.6
+ 6.4.0
#end
@@ -163,12 +163,12 @@
io.wcm
io.wcm.wcm.parsys
- 1.7.2
+ 1.7.4
io.wcm
io.wcm.wcm.ui.granite
- 1.10.2
+ 1.10.4
io.wcm
@@ -183,17 +183,17 @@
io.wcm
io.wcm.handler.url
- 2.0.0
+ 2.1.0
io.wcm
io.wcm.handler.media
- 2.0.0
+ 2.0.2
io.wcm
io.wcm.handler.link
- 2.0.0
+ 2.1.0
io.wcm
@@ -203,7 +203,7 @@
io.wcm
io.wcm.wcm.core.components
- 2.0.0-2.23.2
+ 2.0.2-2.23.2
#end
@@ -273,7 +273,7 @@
io.wcm.maven
io.wcm.maven.aem-dependencies
- #if($optionAemServicePack=="y" || $optionAemServicePackAPI=="y")6.5.19.0000#{else}6.5.0.0005#end
+ #if($optionAemServicePack=="y" || $optionAemServicePackAPI=="y")6.5.20.0000#{else}6.5.0.0005#end
pom
import
@@ -321,11 +321,11 @@
org.junit
junit-bom
- 5.10.1
+ 5.10.2
pom
import
-#set( $mockitoVersion = "5.10.0" )
+#set( $mockitoVersion = "5.11.0" )
org.mockito
mockito-core