Replace convention mappings with PropertyState and Provider
Closes gh-9891
This commit is contained in:
parent
6eee9de3c1
commit
6d8c333016
|
|
@ -17,7 +17,6 @@
|
||||||
package org.springframework.boot.gradle.dsl;
|
package org.springframework.boot.gradle.dsl;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
|
|
||||||
import org.gradle.api.Action;
|
import org.gradle.api.Action;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
|
|
@ -87,11 +86,9 @@ public class SpringBootExtension {
|
||||||
properties.setArtifact(determineArtifactBaseName());
|
properties.setArtifact(determineArtifactBaseName());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
bootBuildInfo.getConventionMapping()
|
bootBuildInfo.setDestinationDir(this.project
|
||||||
.map("destinationDir",
|
.provider(() -> new File(determineMainSourceSetResourcesOutputDir(),
|
||||||
(Callable<File>) () -> new File(
|
"META-INF")));
|
||||||
determineMainSourceSetResourcesOutputDir(),
|
|
||||||
"META-INF"));
|
|
||||||
});
|
});
|
||||||
if (configurer != null) {
|
if (configurer != null) {
|
||||||
configurer.execute(bootBuildInfo);
|
configurer.execute(bootBuildInfo);
|
||||||
|
|
|
||||||
|
|
@ -68,10 +68,10 @@ final class ApplicationPluginAction implements PluginApplicationAction {
|
||||||
bootStartScripts.setClasspath(configuration.getArtifacts().getFiles());
|
bootStartScripts.setClasspath(configuration.getArtifacts().getFiles());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
bootStartScripts.getConventionMapping().map("outputDir",
|
bootStartScripts.setOutputDir(
|
||||||
() -> new File(project.getBuildDir(), "bootScripts"));
|
project.provider(() -> new File(project.getBuildDir(), "bootScripts")));
|
||||||
bootStartScripts.getConventionMapping().map("applicationName",
|
bootStartScripts.setApplicationName(
|
||||||
() -> applicationConvention.getApplicationName());
|
project.provider(() -> applicationConvention.getApplicationName()));
|
||||||
CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts);
|
CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts);
|
||||||
binCopySpec.setFileMode(0x755);
|
binCopySpec.setFileMode(0x755);
|
||||||
distribution.getContents().with(binCopySpec);
|
distribution.getContents().with(binCopySpec);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,13 @@
|
||||||
|
|
||||||
package org.springframework.boot.gradle.tasks.application;
|
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.Optional;
|
||||||
|
import org.gradle.api.tasks.OutputDirectory;
|
||||||
import org.gradle.jvm.application.tasks.CreateStartScripts;
|
import org.gradle.jvm.application.tasks.CreateStartScripts;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -27,10 +33,54 @@ import org.gradle.jvm.application.tasks.CreateStartScripts;
|
||||||
*/
|
*/
|
||||||
public class CreateBootStartScripts extends 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
|
@Override
|
||||||
@Optional
|
@Optional
|
||||||
public String getMainClassName() {
|
public String getMainClassName() {
|
||||||
return super.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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ import org.gradle.api.Action;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
import org.gradle.api.Task;
|
import org.gradle.api.Task;
|
||||||
import org.gradle.api.internal.ConventionTask;
|
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.Input;
|
||||||
import org.gradle.api.tasks.OutputDirectory;
|
import org.gradle.api.tasks.OutputDirectory;
|
||||||
import org.gradle.api.tasks.TaskAction;
|
import org.gradle.api.tasks.TaskAction;
|
||||||
|
|
@ -44,7 +46,7 @@ public class BuildInfo extends ConventionTask {
|
||||||
|
|
||||||
private final BuildInfoProperties properties = new BuildInfoProperties(getProject());
|
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
|
* Generates the {@code build-info.properties} file in the configured
|
||||||
|
|
@ -76,23 +78,30 @@ public class BuildInfo extends ConventionTask {
|
||||||
*/
|
*/
|
||||||
@OutputDirectory
|
@OutputDirectory
|
||||||
public File getDestinationDir() {
|
public File getDestinationDir() {
|
||||||
return this.destinationDir != null ? this.destinationDir
|
return this.destinationDir.isPresent() ? this.destinationDir.get()
|
||||||
: getProject().getBuildDir();
|
: getProject().getBuildDir();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the directory to which the {@code build-info.properties} file will be written.
|
* Sets the directory to which the {@code build-info.properties} file will be written.
|
||||||
*
|
|
||||||
* @param destinationDir the destination directory
|
* @param destinationDir the destination directory
|
||||||
*/
|
*/
|
||||||
public void setDestinationDir(File destinationDir) {
|
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
|
* Returns the {@link BuildInfoProperties properties} that will be included in the
|
||||||
* {@code build-info.properties} file.
|
* {@code build-info.properties} file.
|
||||||
*
|
|
||||||
* @return the properties
|
* @return the properties
|
||||||
*/
|
*/
|
||||||
@Input
|
@Input
|
||||||
|
|
@ -102,7 +111,6 @@ public class BuildInfo extends ConventionTask {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the given {@code action} on the {@link #getProperties()} properties.
|
* Executes the given {@code action} on the {@link #getProperties()} properties.
|
||||||
*
|
|
||||||
* @param action the action
|
* @param action the action
|
||||||
*/
|
*/
|
||||||
public void properties(Action<BuildInfoProperties> action) {
|
public void properties(Action<BuildInfoProperties> action) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue