Skip to content

Commit e5a23bb

Browse files
vlsiclaude
andcommitted
chore(renovate): group Maven updates by groupId
Renovate previously needed a separate packageRule for each groupId, and security updates were never grouped: Renovate forces their groupName to null, so log4j-core and log4j-1.2-api opened as separate PRs (#6691 and #6690) even though both bump to the same 2.25.4. Add a catch-all rule that groups every Maven update by its groupId, and a vulnerabilityAlerts block that applies the same grouping to security updates. Drop the per-groupId rules the catch-all now covers, keeping only the rules that do more than restate a single groupId: groups that span several groupIds (errorprone, classic commons, xalan/xerces, vlsi, helger, gradle, kotlin), version pins (slf4j, xml-apis), disabled entries (guava, internal src:protocol), and the GitHub Actions group. Verified with renovate-config-validator and a `renovate --platform=local` dry run: log4j keeps all four artifacts in one branch, and bouncycastle, activemq, tika, commons, and lets-plot each stay grouped by groupId through the catch-all. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 7c60439 commit e5a23bb

1 file changed

Lines changed: 9 additions & 125 deletions

File tree

renovate.json

Lines changed: 9 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,24 @@
99
"schedule": [
1010
"every 3 weeks on Monday"
1111
],
12+
"vulnerabilityAlerts": {
13+
"description": "Security updates bypass the packageRules grouping below (Renovate resets their groupName), so apply the same groupId grouping to them here.",
14+
"groupName": "{{{replace ':.*' '' depName}}} security"
15+
},
1216
"packageRules": [
1317
{
14-
"groupName": "com.fasterxml.jackson.core",
15-
"matchPackageNames": [
16-
"com.fasterxml.jackson.core{/,}**"
17-
]
18-
},
19-
{
20-
"groupName": "com.github.ben-manes.caffeine",
21-
"matchPackageNames": [
22-
"com.github.ben-manes.caffeine{/,}**"
23-
]
18+
"description": "Group every Maven update by its groupId by default. The more specific rules below run later and override this where a group must span several groupIds, pin a version, or stay disabled.",
19+
"matchDatasources": [
20+
"maven"
21+
],
22+
"groupName": "{{{replace ':.*' '' depName}}}"
2423
},
2524
{
2625
"groupName": "com.github.vlsi",
2726
"matchPackageNames": [
2827
"com.github.vlsi{/,}**"
2928
]
3029
},
31-
{
32-
"groupName": "com.github.weisj",
33-
"matchPackageNames": [
34-
"com.github.weisj{/,}**"
35-
]
36-
},
37-
{
38-
"groupName": "com.google.auto.service",
39-
"matchPackageNames": [
40-
"com.google.auto.service{/,}**"
41-
]
42-
},
4330
{
4431
"groupName": "com.google.errorprone",
4532
"matchPackageNames": [
@@ -79,25 +66,6 @@
7966
"github/**"
8067
]
8168
},
82-
{
83-
"groupName": "io.burt",
84-
"matchPackageNames": [
85-
"io.burt{/,}**"
86-
]
87-
},
88-
{
89-
"groupName": "net.minidev json-smart",
90-
"matchPackageNames": [
91-
"net.minidev:accessors-smart{/,}**",
92-
"net.minidev:json-smart{/,}**"
93-
]
94-
},
95-
{
96-
"groupName": "com.miglayout",
97-
"matchPackageNames": [
98-
"com.miglayout{/,}**"
99-
]
100-
},
10169
{
10270
"groupName": "commons-* (classic)",
10371
"description": "Classic Apache Commons artifacts where groupId == artifactId",
@@ -110,97 +78,13 @@
11078
"commons-net{/,}**"
11179
]
11280
},
113-
{
114-
"groupName": "org.ajoberstar.grgit",
115-
"matchPackageNames": [
116-
"org.ajoberstar.grgit{/,}**"
117-
]
118-
},
119-
{
120-
"groupName": "org.apache.activemq",
121-
"matchPackageNames": [
122-
"org.apache.activemq{/,}**"
123-
]
124-
},
125-
{
126-
"groupName": "org.apache.commons",
127-
"matchPackageNames": [
128-
"org.apache.commons{/,}**"
129-
]
130-
},
131-
{
132-
"groupName": "org.apache.ftpserver",
133-
"matchPackageNames": [
134-
"org.apache.ftpserver{/,}**"
135-
]
136-
},
137-
{
138-
"groupName": "org.apache.httpcomponents4",
139-
"matchPackageNames": [
140-
"org.apache.httpcomponents:{/,}**"
141-
]
142-
},
143-
{
144-
"groupName": "org.apache.httpcomponents5",
145-
"matchPackageNames": [
146-
"org.apache.httpcomponents.client5:{/,}**"
147-
]
148-
},
149-
{
150-
"groupName": "org.apache.logging.log4j",
151-
"matchPackageNames": [
152-
"org.apache.logging.log4j{/,}**"
153-
]
154-
},
155-
{
156-
"groupName": "org.apache.tika",
157-
"matchPackageNames": [
158-
"org.apache.tika{/,}**"
159-
]
160-
},
161-
{
162-
"groupName": "org.bouncycastle",
163-
"matchPackageNames": [
164-
"org.bouncycastle{/,}**"
165-
]
166-
},
167-
{
168-
"groupName": "org.eclipse.jetty",
169-
"matchPackageNames": [
170-
"org.eclipse.jetty{/,}**"
171-
]
172-
},
173-
{
174-
"groupName": "org.hamcrest",
175-
"matchPackageNames": [
176-
"org.hamcrest{/,}**"
177-
]
178-
},
17981
{
18082
"groupName": "org.jetbrains.kotlin",
18183
"description": "Kotlin compiler plugins (jvm, kapt, serialization, ...) share a version",
18284
"matchPackageNames": [
18385
"org.jetbrains.kotlin{/,}**"
18486
]
18587
},
186-
{
187-
"groupName": "org.jetbrains.lets-plot",
188-
"matchPackageNames": [
189-
"org.jetbrains.lets-plot{/,}**"
190-
]
191-
},
192-
{
193-
"groupName": "org.jodd",
194-
"matchPackageNames": [
195-
"org.jodd{/,}**"
196-
]
197-
},
198-
{
199-
"groupName": "org.openjdk.jmh",
200-
"matchPackageNames": [
201-
"org.openjdk.jmh{/,}**"
202-
]
203-
},
20488
{
20589
"groupName": "org.slf4j",
20690
"allowedVersions": "< 2.0.0",

0 commit comments

Comments
 (0)