Skip to content

Commit b80cd59

Browse files
authored
Upgrade Gradle wrapper and Spring Gradle plugins (#382)
* Upgrade Gradle wrapper and Spring Gradle plugins * Add license header * Move .RELEASE onto the version as Semver doesn't accept it as a versionPattern otherwise * Add test to verify that Gradle wrapper and plugins are upgraded as desired * Add missing license headers
1 parent 3a29fb5 commit b80cd59

File tree

15 files changed

+475
-44
lines changed

15 files changed

+475
-44
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ dependencies {
117117
implementation("org.openrewrite:rewrite-gradle:${rewriteVersion}")
118118
implementation("org.openrewrite:rewrite-maven:${rewriteVersion}")
119119
implementation("org.openrewrite.recipe:rewrite-java-dependencies:${rewriteVersion}")
120+
implementation("org.openrewrite.gradle.tooling:model:${rewriteVersion}")
120121

121122
runtimeOnly("org.openrewrite:rewrite-java-17:$rewriteVersion")
122123
runtimeOnly("org.openrewrite.recipe:rewrite-testing-frameworks:$rewriteVersion")
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright 2023 the original author or authors.
3+
* <p>
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
* <p>
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
* <p>
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.openrewrite.gradle.spring;
17+
18+
import lombok.EqualsAndHashCode;
19+
import lombok.Value;
20+
import org.openrewrite.*;
21+
import org.openrewrite.gradle.IsBuildGradle;
22+
import org.openrewrite.gradle.marker.GradleProject;
23+
import org.openrewrite.gradle.plugins.AddBuildPlugin;
24+
import org.openrewrite.internal.lang.Nullable;
25+
import org.openrewrite.java.JavaIsoVisitor;
26+
import org.openrewrite.java.tree.J;
27+
import org.openrewrite.java.tree.JavaSourceFile;
28+
import org.openrewrite.marker.SearchResult;
29+
30+
import java.util.Optional;
31+
32+
@Value
33+
@EqualsAndHashCode(callSuper = true)
34+
public class AddSpringDependencyManagementPlugin extends Recipe {
35+
@Override
36+
public String getDisplayName() {
37+
return "Add `io.spring.dependency-management` plugin, if in use";
38+
}
39+
40+
@Override
41+
public String getDescription() {
42+
return "Add `io.spring.dependency-management` plugin, if in use.";
43+
}
44+
45+
@Override
46+
public TreeVisitor<?, ExecutionContext> getVisitor() {
47+
return Preconditions.check(
48+
Preconditions.and(
49+
new IsBuildGradle<>(),
50+
new UsesSpringDependencyManagement()
51+
),
52+
new AddBuildPlugin("io.spring.dependency-management", "1.0.6.RELEASE", null).getVisitor()
53+
);
54+
}
55+
56+
private static class UsesSpringDependencyManagement extends JavaIsoVisitor<ExecutionContext> {
57+
@Override
58+
public J visit(@Nullable Tree tree, ExecutionContext ctx) {
59+
if (tree instanceof JavaSourceFile) {
60+
JavaSourceFile cu = (JavaSourceFile) tree;
61+
Optional<GradleProject> maybeGp = cu.getMarkers().findFirst(GradleProject.class);
62+
if (!maybeGp.isPresent()) {
63+
return cu;
64+
}
65+
GradleProject gp = maybeGp.get();
66+
if (gp.getPlugins().stream().anyMatch(plugin -> "io.spring.dependency-management".equals(plugin.getId()) ||
67+
"io.spring.gradle.dependencymanagement.DependencyManagementPlugin".equals(plugin.getFullyQualifiedClassName()))) {
68+
return SearchResult.found(cu);
69+
}
70+
}
71+
return super.visit(tree, ctx);
72+
}
73+
}
74+
}

src/main/resources/META-INF/rewrite/spring-boot-20.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ recipeList:
3939
groupId: org.springframework.boot
4040
artifactId: spring-boot-starter-parent
4141
newVersion: 2.0.x
42+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
43+
pluginIdPattern: org.springframework.boot
44+
newVersion: 2.0.x
45+
- org.openrewrite.gradle.spring.AddSpringDependencyManagementPlugin
46+
- org.openrewrite.gradle.UpdateGradleWrapper:
47+
version: 4.x
48+
addIfMissing: false
4249
- org.openrewrite.java.dependencies.UpgradeDependencyVersion:
4350
groupId: org.mockito
4451
artifactId: "*"

src/main/resources/META-INF/rewrite/spring-boot-21.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,15 @@ recipeList:
3939
groupId: org.springframework.boot
4040
artifactId: spring-boot-starter-parent
4141
newVersion: 2.1.x
42-
42+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
43+
pluginIdPattern: org.springframework.boot
44+
newVersion: 2.1.x
45+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
46+
pluginIdPattern: io.spring.dependency-management
47+
newVersion: 1.0.10.RELEASE
48+
- org.openrewrite.gradle.UpdateGradleWrapper:
49+
version: ^4.4
50+
addIfMissing: false
4351
# Use recommended replacements for deprecated APIs
4452
- org.openrewrite.java.spring.boot2.MigrateRestTemplateBuilderBasicAuthorization
4553
- org.openrewrite.java.spring.boot2.MigrateRestTemplateBuilderTimeoutByInt

src/main/resources/META-INF/rewrite/spring-boot-22.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ recipeList:
4040
groupId: org.springframework.boot
4141
artifactId: spring-boot-starter-parent
4242
newVersion: 2.2.x
43+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
44+
pluginIdPattern: org.springframework.boot
45+
newVersion: 2.2.x
46+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
47+
pluginIdPattern: io.spring.dependency-management
48+
newVersion: 1.0.11.RELEASE
49+
- org.openrewrite.gradle.UpdateGradleWrapper:
50+
version: ^4.10
51+
addIfMissing: false
4352

4453
# Use recommended replacements for deprecated APIs
4554
- org.openrewrite.java.spring.boot2.MigrateApplicationHealthIndicatorToPingHealthIndicator

src/main/resources/META-INF/rewrite/spring-boot-23.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ recipeList:
4040
groupId: org.springframework.boot
4141
artifactId: spring-boot-starter-parent
4242
newVersion: 2.3.x
43+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
44+
pluginIdPattern: org.springframework.boot
45+
newVersion: 2.3.x
46+
- org.openrewrite.gradle.UpdateGradleWrapper:
47+
version: ^6.3
48+
addIfMissing: false
4349
# https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes#validation-starter-no-longer-included-in-web-starters
4450
- org.openrewrite.java.dependencies.AddDependency:
4551
groupId: org.springframework.boot

src/main/resources/META-INF/rewrite/spring-boot-24.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ recipeList:
4141
groupId: org.springframework.boot
4242
artifactId: spring-boot-starter-parent
4343
newVersion: 2.4.x
44+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
45+
pluginIdPattern: org.springframework.boot
46+
newVersion: 2.4.x
4447
- org.openrewrite.maven.RemoveExclusion:
4548
groupId: org.springframework.boot
4649
artifactId: spring-boot-starter-test

src/main/resources/META-INF/rewrite/spring-boot-25.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ recipeList:
3333
groupId: org.springframework.boot
3434
artifactId: spring-boot-starter-parent
3535
newVersion: 2.5.x
36+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
37+
pluginIdPattern: org.springframework.boot
38+
newVersion: 2.5.x
39+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
40+
pluginIdPattern: io.spring.dependency-management
41+
newVersion: 1.0.15.RELEASE
42+
- org.openrewrite.gradle.UpdateGradleWrapper:
43+
version: ^6.8
44+
addIfMissing: false
3645
- org.openrewrite.java.spring.boot2.MigrateDatabaseCredentials
3746

3847
# Use recommended replacements for deprecated APIs

src/main/resources/META-INF/rewrite/spring-boot-26.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ recipeList:
3939
groupId: org.springframework.boot
4040
artifactId: spring-boot-starter-parent
4141
newVersion: 2.6.x
42+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
43+
pluginIdPattern: org.springframework.boot
44+
newVersion: 2.6.x
4245
# Update properties
4346
- org.openrewrite.java.spring.boot2.SpringBootProperties_2_6
4447

src/main/resources/META-INF/rewrite/spring-boot-27.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ recipeList:
3636
newVersion: 2.7.x
3737
retainVersions:
3838
- mysql:mysql-connector-java
39+
- org.openrewrite.gradle.plugins.UpgradePluginVersion:
40+
pluginIdPattern: org.springframework.boot
41+
newVersion: 2.7.x
3942
# Use recommended replacements for deprecated APIs
4043
- org.openrewrite.java.ChangeType:
4144
oldFullyQualifiedTypeName: org.springframework.boot.web.server.LocalServerPort

0 commit comments

Comments
 (0)