Remove spring-boot.version property from spring-boot-dependencies
The version of Spring Boot should not be modifiable by a property, only being using a different version of spring-boot-dependencies or spring-boot-starter-parent. Fixes gh-23174
This commit is contained in:
		
							parent
							
								
									d5234a9254
								
							
						
					
					
						commit
						358b9f839a
					
				| 
						 | 
					@ -169,15 +169,18 @@ public class BomExtension {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private void addLibrary(Library library) {
 | 
						private void addLibrary(Library library) {
 | 
				
			||||||
		this.libraries.add(library);
 | 
							this.libraries.add(library);
 | 
				
			||||||
		this.properties.put(library.getVersionProperty(), library.getVersion());
 | 
							String versionProperty = library.getVersionProperty();
 | 
				
			||||||
 | 
							if (versionProperty != null) {
 | 
				
			||||||
 | 
								this.properties.put(versionProperty, library.getVersion());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		for (Group group : library.getGroups()) {
 | 
							for (Group group : library.getGroups()) {
 | 
				
			||||||
			for (Module module : group.getModules()) {
 | 
								for (Module module : group.getModules()) {
 | 
				
			||||||
				putArtifactVersionProperty(group.getId(), module.getName(), library.getVersionProperty());
 | 
									putArtifactVersionProperty(group.getId(), module.getName(), versionProperty);
 | 
				
			||||||
				this.dependencyHandler.getConstraints().add(JavaPlatformPlugin.API_CONFIGURATION_NAME,
 | 
									this.dependencyHandler.getConstraints().add(JavaPlatformPlugin.API_CONFIGURATION_NAME,
 | 
				
			||||||
						createDependencyNotation(group.getId(), module.getName(), library.getVersion()));
 | 
											createDependencyNotation(group.getId(), module.getName(), library.getVersion()));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for (String bomImport : group.getBoms()) {
 | 
								for (String bomImport : group.getBoms()) {
 | 
				
			||||||
				putArtifactVersionProperty(group.getId(), bomImport, library.getVersionProperty());
 | 
									putArtifactVersionProperty(group.getId(), bomImport, versionProperty);
 | 
				
			||||||
				String bomDependency = createDependencyNotation(group.getId(), bomImport, library.getVersion());
 | 
									String bomDependency = createDependencyNotation(group.getId(), bomImport, library.getVersion());
 | 
				
			||||||
				this.dependencyHandler.add(JavaPlatformPlugin.API_CONFIGURATION_NAME,
 | 
									this.dependencyHandler.add(JavaPlatformPlugin.API_CONFIGURATION_NAME,
 | 
				
			||||||
						this.dependencyHandler.platform(bomDependency));
 | 
											this.dependencyHandler.platform(bomDependency));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -168,7 +168,10 @@ public class BomPlugin implements Plugin<Project> {
 | 
				
			||||||
						Node plugin = new Node(plugins, "plugin");
 | 
											Node plugin = new Node(plugins, "plugin");
 | 
				
			||||||
						plugin.appendNode("groupId", group.getId());
 | 
											plugin.appendNode("groupId", group.getId());
 | 
				
			||||||
						plugin.appendNode("artifactId", pluginName);
 | 
											plugin.appendNode("artifactId", pluginName);
 | 
				
			||||||
						plugin.appendNode("version", "${" + library.getVersionProperty() + "}");
 | 
											String versionProperty = library.getVersionProperty();
 | 
				
			||||||
 | 
											String value = (versionProperty != null) ? "${" + versionProperty + "}"
 | 
				
			||||||
 | 
													: library.getVersion().toString();
 | 
				
			||||||
 | 
											plugin.appendNode("version", value);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,8 @@ public class Library {
 | 
				
			||||||
		this.name = name;
 | 
							this.name = name;
 | 
				
			||||||
		this.version = version;
 | 
							this.version = version;
 | 
				
			||||||
		this.groups = groups;
 | 
							this.groups = groups;
 | 
				
			||||||
		this.versionProperty = name.toLowerCase(Locale.ENGLISH).replace(' ', '-') + ".version";
 | 
							this.versionProperty = "Spring Boot".equals(name) ? null
 | 
				
			||||||
 | 
									: name.toLowerCase(Locale.ENGLISH).replace(' ', '-') + ".version";
 | 
				
			||||||
		this.prohibitedVersions = prohibitedVersions;
 | 
							this.prohibitedVersions = prohibitedVersions;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,7 +103,10 @@ public class ExtractVersionConstraints extends DefaultTask {
 | 
				
			||||||
		Object bom = getProject().project(projectPath).getExtensions().getByName("bom");
 | 
							Object bom = getProject().project(projectPath).getExtensions().getByName("bom");
 | 
				
			||||||
		BomExtension bomExtension = (BomExtension) bom;
 | 
							BomExtension bomExtension = (BomExtension) bom;
 | 
				
			||||||
		for (Library lib : bomExtension.getLibraries()) {
 | 
							for (Library lib : bomExtension.getLibraries()) {
 | 
				
			||||||
			this.versionProperties.add(new VersionProperty(lib.getName(), lib.getVersionProperty()));
 | 
								String versionProperty = lib.getVersionProperty();
 | 
				
			||||||
 | 
								if (versionProperty != null) {
 | 
				
			||||||
 | 
									this.versionProperties.add(new VersionProperty(lib.getName(), versionProperty));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,11 +16,9 @@
 | 
				
			||||||
package org.springframework.boot.build.bom;
 | 
					package org.springframework.boot.build.bom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
import java.io.FileReader;
 | 
					 | 
				
			||||||
import java.io.FileWriter;
 | 
					import java.io.FileWriter;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.io.PrintWriter;
 | 
					import java.io.PrintWriter;
 | 
				
			||||||
import java.io.Reader;
 | 
					 | 
				
			||||||
import java.util.function.Consumer;
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.gradle.testkit.runner.BuildResult;
 | 
					import org.gradle.testkit.runner.BuildResult;
 | 
				
			||||||
| 
						 | 
					@ -31,7 +29,6 @@ import org.junit.jupiter.api.io.TempDir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.springframework.boot.build.DeployedPlugin;
 | 
					import org.springframework.boot.build.DeployedPlugin;
 | 
				
			||||||
import org.springframework.boot.build.assertj.NodeAssert;
 | 
					import org.springframework.boot.build.assertj.NodeAssert;
 | 
				
			||||||
import org.springframework.util.FileCopyUtils;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
					import static org.assertj.core.api.Assertions.assertThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -172,6 +169,33 @@ public class BomPluginIntegrationTests {
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						void libraryNamedSpringBootHasNoVersionProperty() throws IOException {
 | 
				
			||||||
 | 
							try (PrintWriter out = new PrintWriter(new FileWriter(this.buildFile))) {
 | 
				
			||||||
 | 
								out.println("plugins {");
 | 
				
			||||||
 | 
								out.println("    id 'org.springframework.boot.bom'");
 | 
				
			||||||
 | 
								out.println("}");
 | 
				
			||||||
 | 
								out.println("bom {");
 | 
				
			||||||
 | 
								out.println("    library('Spring Boot', '1.2.3') {");
 | 
				
			||||||
 | 
								out.println("        group('org.springframework.boot') {");
 | 
				
			||||||
 | 
								out.println("            modules = [");
 | 
				
			||||||
 | 
								out.println("                'spring-boot'");
 | 
				
			||||||
 | 
								out.println("            ]");
 | 
				
			||||||
 | 
								out.println("        }");
 | 
				
			||||||
 | 
								out.println("    }");
 | 
				
			||||||
 | 
								out.println("}");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							generatePom((pom) -> {
 | 
				
			||||||
 | 
								assertThat(pom).textAtPath("//properties/spring-boot.version").isEmpty();
 | 
				
			||||||
 | 
								NodeAssert dependency = pom.nodeAtPath("//dependencyManagement/dependencies/dependency[1]");
 | 
				
			||||||
 | 
								assertThat(dependency).textAtPath("groupId").isEqualTo("org.springframework.boot");
 | 
				
			||||||
 | 
								assertThat(dependency).textAtPath("artifactId").isEqualTo("spring-boot");
 | 
				
			||||||
 | 
								assertThat(dependency).textAtPath("version").isEqualTo("1.2.3");
 | 
				
			||||||
 | 
								assertThat(dependency).textAtPath("scope").isNullOrEmpty();
 | 
				
			||||||
 | 
								assertThat(dependency).textAtPath("type").isNullOrEmpty();
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private BuildResult runGradle(String... args) {
 | 
						private BuildResult runGradle(String... args) {
 | 
				
			||||||
		return GradleRunner.create().withDebug(true).withProjectDir(this.projectDir).withArguments(args)
 | 
							return GradleRunner.create().withDebug(true).withProjectDir(this.projectDir).withArguments(args)
 | 
				
			||||||
				.withPluginClasspath().build();
 | 
									.withPluginClasspath().build();
 | 
				
			||||||
| 
						 | 
					@ -180,12 +204,6 @@ public class BomPluginIntegrationTests {
 | 
				
			||||||
	private void generatePom(Consumer<NodeAssert> consumer) {
 | 
						private void generatePom(Consumer<NodeAssert> consumer) {
 | 
				
			||||||
		runGradle(DeployedPlugin.GENERATE_POM_TASK_NAME, "-s");
 | 
							runGradle(DeployedPlugin.GENERATE_POM_TASK_NAME, "-s");
 | 
				
			||||||
		File generatedPomXml = new File(this.projectDir, "build/publications/maven/pom-default.xml");
 | 
							File generatedPomXml = new File(this.projectDir, "build/publications/maven/pom-default.xml");
 | 
				
			||||||
		try (Reader reader = new FileReader(generatedPomXml)) {
 | 
					 | 
				
			||||||
			System.out.println(FileCopyUtils.copyToString(reader));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		catch (IOException ex) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		assertThat(generatedPomXml).isFile();
 | 
							assertThat(generatedPomXml).isFile();
 | 
				
			||||||
		consumer.accept(new NodeAssert(generatedPomXml));
 | 
							consumer.accept(new NodeAssert(generatedPomXml));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue