Replace convention mappings with PropertyState and Provider

Closes gh-9891
This commit is contained in:
Andy Wilkinson 2017-09-26 12:48:08 +01:00
parent 6eee9de3c1
commit 6d8c333016
4 changed files with 71 additions and 16 deletions

View File

@ -17,7 +17,6 @@
package org.springframework.boot.gradle.dsl;
import java.io.File;
import java.util.concurrent.Callable;
import org.gradle.api.Action;
import org.gradle.api.Project;
@ -87,11 +86,9 @@ public class SpringBootExtension {
properties.setArtifact(determineArtifactBaseName());
}
});
bootBuildInfo.getConventionMapping()
.map("destinationDir",
(Callable<File>) () -> new File(
determineMainSourceSetResourcesOutputDir(),
"META-INF"));
bootBuildInfo.setDestinationDir(this.project
.provider(() -> new File(determineMainSourceSetResourcesOutputDir(),
"META-INF")));
});
if (configurer != null) {
configurer.execute(bootBuildInfo);

View File

@ -68,10 +68,10 @@ final class ApplicationPluginAction implements PluginApplicationAction {
bootStartScripts.setClasspath(configuration.getArtifacts().getFiles());
}
});
bootStartScripts.getConventionMapping().map("outputDir",
() -> new File(project.getBuildDir(), "bootScripts"));
bootStartScripts.getConventionMapping().map("applicationName",
() -> applicationConvention.getApplicationName());
bootStartScripts.setOutputDir(
project.provider(() -> new File(project.getBuildDir(), "bootScripts")));
bootStartScripts.setApplicationName(
project.provider(() -> applicationConvention.getApplicationName()));
CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts);
binCopySpec.setFileMode(0x755);
distribution.getContents().with(binCopySpec);

View File

@ -16,7 +16,13 @@
package org.springframework.boot.gradle.tasks.application;
import java.io.File;
import org.gradle.api.provider.PropertyState;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.jvm.application.tasks.CreateStartScripts;
/**
@ -27,10 +33,54 @@ import org.gradle.jvm.application.tasks.CreateStartScripts;
*/
public class CreateBootStartScripts extends CreateStartScripts {
private final PropertyState<File> outputDir = getProject().property(File.class);
private final PropertyState<String> applicationName = getProject()
.property(String.class);
@Override
@Optional
public String getMainClassName() {
return super.getMainClassName();
}
@Input
@Override
public String getApplicationName() {
return this.applicationName.getOrNull();
}
@Override
public void setApplicationName(String applicationName) {
this.applicationName.set(applicationName);
}
/**
* Sets the application name to the value from the given
* {@code applicationNameProvider}.
* @param applicationNameProvider the provider of the application name
*/
public void setApplicationName(Provider<String> applicationNameProvider) {
this.applicationName.set(applicationNameProvider);
}
@Override
@OutputDirectory
public File getOutputDir() {
return this.outputDir.getOrNull();
}
@Override
public void setOutputDir(File outputDir) {
this.outputDir.set(outputDir);
}
/**
* Sets the output directory to the value from the given {@code outputDirProvider}.
* @param outputDirProvider the provider of the output directory
*/
public void setOutputDir(Provider<File> outputDirProvider) {
this.outputDir.set(outputDirProvider);
}
}

View File

@ -26,6 +26,8 @@ import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.internal.ConventionTask;
import org.gradle.api.provider.PropertyState;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.TaskAction;
@ -44,7 +46,7 @@ public class BuildInfo extends ConventionTask {
private final BuildInfoProperties properties = new BuildInfoProperties(getProject());
private File destinationDir;
private PropertyState<File> destinationDir = getProject().property(File.class);
/**
* Generates the {@code build-info.properties} file in the configured
@ -76,23 +78,30 @@ public class BuildInfo extends ConventionTask {
*/
@OutputDirectory
public File getDestinationDir() {
return this.destinationDir != null ? this.destinationDir
return this.destinationDir.isPresent() ? this.destinationDir.get()
: getProject().getBuildDir();
}
/**
* Sets the directory to which the {@code build-info.properties} file will be written.
*
* @param destinationDir the destination directory
*/
public void setDestinationDir(File destinationDir) {
this.destinationDir = destinationDir;
this.destinationDir.set(destinationDir);
}
/**
* Sets the directory to which the {@code build-info.properties} file will be written
* to the value from the given {@code destinationDirProvider}.
* @param destinationDirProvider the provider of the destination directory
*/
public void setDestinationDir(Provider<File> destinationDirProvider) {
this.destinationDir.set(destinationDirProvider);
}
/**
* Returns the {@link BuildInfoProperties properties} that will be included in the
* {@code build-info.properties} file.
*
* @return the properties
*/
@Input
@ -102,7 +111,6 @@ public class BuildInfo extends ConventionTask {
/**
* Executes the given {@code action} on the {@link #getProperties()} properties.
*
* @param action the action
*/
public void properties(Action<BuildInfoProperties> action) {