Skip to content

Commit 111d8c6

Browse files
committed
feat: Add modernizer plugin
1 parent dd07e26 commit 111d8c6

4 files changed

Lines changed: 50 additions & 2 deletions

File tree

src/main/resources/META-INF/archetype-post-generate.groovy

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ ${modulesXml}
215215
<maven-failsafe-plugin.version>3.5.5</maven-failsafe-plugin.version>
216216
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
217217
<maven-surefire-plugin.version>3.5.5</maven-surefire-plugin.version>
218+
<modernizer-maven-plugin.version>3.4.0</modernizer-maven-plugin.version>
218219
</properties>
219220
220221
<dependencyManagement>
@@ -271,8 +272,31 @@ ${dmXml}
271272
<argLine>-XX:MaxRAMPercentage=5.0</argLine>
272273
</configuration>
273274
</plugin>
275+
<plugin>
276+
<groupId>org.gaul</groupId>
277+
<artifactId>modernizer-maven-plugin</artifactId>
278+
<version>\${modernizer-maven-plugin.version}</version>
279+
<configuration>
280+
<javaVersion>\${java.version}</javaVersion>
281+
</configuration>
282+
<executions>
283+
<execution>
284+
<id>modernizer</id>
285+
<phase>verify</phase>
286+
<goals>
287+
<goal>modernizer</goal>
288+
</goals>
289+
</execution>
290+
</executions>
291+
</plugin>
274292
</plugins>
275293
</pluginManagement>
294+
<plugins>
295+
<plugin>
296+
<groupId>org.gaul</groupId>
297+
<artifactId>modernizer-maven-plugin</artifactId>
298+
</plugin>
299+
</plugins>
276300
</build>
277301
</project>
278302
"""

src/site/asciidoc/modules.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ It contains:
9292
* `<dependencyManagement>` — all modules pinned to `${project.version}`, sorted alphabetically by `artifactId`
9393
* Common properties: Java 21 via `maven.compiler.release`; UTF-8 source encoding
9494
* `<pluginManagement>` — pinned versions for `maven-compiler-plugin`, `maven-failsafe-plugin`,
95-
`maven-jar-plugin` (with `skipIfEmpty=true`), and `maven-surefire-plugin`
95+
`maven-jar-plugin` (with `skipIfEmpty=true`), `maven-surefire-plugin`, and
96+
`modernizer-maven-plugin` (bound to `verify`, `javaVersion` = `${java.version}`)
97+
* `<plugins>` — activates `modernizer-maven-plugin` so every module is checked for outdated API usage during `verify`
9698

9799
To build a generated project:
98100

src/site/asciidoc/requirements.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ Do not create a `pom.xml` at the project root.
5959
`project.build.sourceEncoding`.
6060
* `<pluginManagement>` — declare pinned versions for `maven-compiler-plugin`,
6161
`maven-failsafe-plugin`, `maven-jar-plugin` (configured with `skipIfEmpty=true`),
62-
and `maven-surefire-plugin`.
62+
`maven-surefire-plugin`, and `modernizer-maven-plugin` (bound to the `verify`
63+
phase with `javaVersion` set to `${java.version}`).
64+
* `<plugins>` — activate `modernizer-maven-plugin` so every module is checked for
65+
outdated API usage during `verify`.
6366

6467
=== Child module POMs
6568

src/test/resources/projects/basic/verify.groovy

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ assert parentPom.contains('<artifactId>maven-jar-plugin</artifactId>') : 'p
6363
assert parentPom.contains('<artifactId>maven-surefire-plugin</artifactId>') : 'parent must declare maven-surefire-plugin in pluginManagement'
6464
assert parentPom.contains('<skipIfEmpty>true</skipIfEmpty>') : 'maven-jar-plugin must configure skipIfEmpty=true'
6565

66+
// modernizer-maven-plugin: pinned, managed in pluginManagement, activated in build/plugins
67+
assert parentPom.contains('<modernizer-maven-plugin.version>3.4.0</modernizer-maven-plugin.version>') \
68+
: 'parent must pin modernizer-maven-plugin version'
69+
assert parentPom.count('<artifactId>modernizer-maven-plugin</artifactId>') == 2 \
70+
: 'modernizer-maven-plugin must appear twice: once in pluginManagement, once in active plugins'
71+
72+
def pmBlock = (parentPom =~ /(?s)<pluginManagement>.*<\/pluginManagement>/)[0]
73+
assert pmBlock.contains('<groupId>org.gaul</groupId>') : 'modernizer must use groupId org.gaul'
74+
assert pmBlock.contains('<artifactId>modernizer-maven-plugin</artifactId>') : 'modernizer must be declared in pluginManagement'
75+
assert pmBlock.contains('<version>${modernizer-maven-plugin.version}</version>') : 'modernizer pluginManagement must reference the version property'
76+
assert pmBlock.contains('<javaVersion>${java.version}</javaVersion>') : 'modernizer must configure javaVersion'
77+
assert pmBlock.contains('<goal>modernizer</goal>') : 'modernizer pluginManagement must bind the modernizer goal'
78+
79+
// the active <plugins> section is what remains of <build> after removing <pluginManagement>
80+
def buildBlock = (parentPom =~ /(?s)<build>.*<\/build>/)[0]
81+
def activePlugins = buildBlock.replaceAll(/(?s)<pluginManagement>.*<\/pluginManagement>/, '')
82+
assert activePlugins.contains('<artifactId>modernizer-maven-plugin</artifactId>') \
83+
: 'modernizer-maven-plugin must be activated in the parent <build><plugins> section'
84+
6685
// ── 5. Modules are sorted alphabetically in <modules> ────────────────────────
6786

6887
def moduleOrder = modules.sort().collect { "<module>../${it}</module>" }

0 commit comments

Comments
 (0)