diff --git a/buildSrc/src/main/groovy/versions/VersionsResourceTasks.groovy b/buildSrc/src/main/groovy/versions/VersionsResourceTasks.groovy deleted file mode 100644 index b96e9a0181..0000000000 --- a/buildSrc/src/main/groovy/versions/VersionsResourceTasks.groovy +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2002-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package versions - -import org.gradle.api.DefaultTask -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -/** - * @author Rob Winch - */ -class VersionsResourceTasks extends DefaultTask { - @OutputFile - File versionsFile; - - @Input - Closure> versions; - - void setVersions(Map versions) { - this.versions = { versions }; - } - - void setVersions(Closure> versions) { - this.versions = versions - } - - @TaskAction - void generateVersions() { - versionsFile.parentFile.mkdirs() - versionsFile.createNewFile() - Properties versionsProperties = new Properties() - versionsProperties.putAll(versions.call()) - versionsProperties.store(versionsFile.newWriter(), null) - } -} diff --git a/buildSrc/src/main/java/versions/VersionsResourceTasks.java b/buildSrc/src/main/java/versions/VersionsResourceTasks.java new file mode 100644 index 0000000000..75e19ef0a5 --- /dev/null +++ b/buildSrc/src/main/java/versions/VersionsResourceTasks.java @@ -0,0 +1,49 @@ +package versions; + +import org.codehaus.groovy.runtime.ResourceGroovyMethods; +import org.gradle.api.DefaultTask; +import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.provider.MapProperty; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.OutputFile; +import org.gradle.api.tasks.TaskAction; + +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.util.Properties; + +public class VersionsResourceTasks extends DefaultTask { + + private final RegularFileProperty versionsFile = getProject().getObjects().fileProperty(); + + private final MapProperty versions = getProject().getObjects().mapProperty(String.class, String.class); + + @OutputFile + public RegularFileProperty getVersionsFile() { + return versionsFile; + } + + @Input + public MapProperty getVersions() { + return versions; + } + + @TaskAction + void generateVersions() throws IOException { + + File file = versionsFile.getAsFile().get(); + File parentFile = versionsFile.getAsFile().get().getParentFile(); + + if (parentFile.isDirectory() || parentFile.mkdirs()) { + Properties properties = new Properties(); + properties.putAll(getVersions().get()); + try (Writer writer = ResourceGroovyMethods.newWriter(file)) { + properties.store(writer, null); + } + } + else { + throw new IOException(parentFile + " does not exist and cannot be created"); + } + } +} diff --git a/core/spring-security-core.gradle b/core/spring-security-core.gradle index 4f6b8a8c2b..e295352291 100644 --- a/core/spring-security-core.gradle +++ b/core/spring-security-core.gradle @@ -36,7 +36,7 @@ dependencies { task springVersion(type: versions.VersionsResourceTasks) { versionsFile = file("${buildDir}/versions/spring-security.versions") - versions = { project.dependencyManagement.managedVersions } + versions = provider { project.dependencyManagement.managedVersions } } tasks.processResources {