From 3b3d4c05de7fece22c6d2ddc103d4905530abbfb Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Mon, 16 May 2022 19:01:05 -0500 Subject: [PATCH 1/4] Initial introduction of delayed config concepts (Property, Provider, etc) for `QuarkusPluginExtension`, `QuarkusBuild` and `QuarkusDev` --- .../java/io/quarkus/gradle/QuarkusPlugin.java | 7 +- .../extension/QuarkusPluginExtension.java | 129 ++++++++++----- .../io/quarkus/gradle/tasks/QuarkusBuild.java | 82 ++++++++-- .../io/quarkus/gradle/tasks/QuarkusDev.java | 149 ++++++++++++------ 4 files changed, 266 insertions(+), 101 deletions(-) diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java index a26b19b09a104..c986d46f504d4 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java @@ -101,12 +101,15 @@ public QuarkusPlugin(ToolingModelBuilderRegistry registry) { @Override public void apply(Project project) { verifyGradleVersion(); + + // Apply the `java` plugin + project.getPluginManager().apply(JavaPlugin.class); + registerModel(); + // register extension final QuarkusPluginExtension quarkusExt = project.getExtensions().create(EXTENSION_NAME, QuarkusPluginExtension.class, project); - // register plugin - project.getPluginManager().apply(JavaPlugin.class); registerTasks(project, quarkusExt); } diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java index 9c41f4c5460e8..503bfe4d24794 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java @@ -12,10 +12,13 @@ import org.gradle.api.Action; import org.gradle.api.Project; +import org.gradle.api.file.Directory; +import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.FileCollection; +import org.gradle.api.file.FileSystemLocation; import org.gradle.api.file.RegularFile; import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.plugins.JavaPluginConvention; +import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; @@ -34,20 +37,40 @@ public class QuarkusPluginExtension { private final Project project; - private File outputDirectory; + private final DirectoryProperty outputDirectory; - private String finalName; + private final Property finalName; - private File sourceDir; + private final DirectoryProperty sourceDirectory; - private File workingDir; + private final DirectoryProperty workingDirectory; - private File outputConfigDirectory; + private final DirectoryProperty outputConfigDirectory; private final SourceSetExtension sourceSetExtension; public QuarkusPluginExtension(Project project) { this.project = project; + + finalName = project.getObjects().property( String.class ); + finalName.convention( project.provider( + () -> String.format("%s-%s", project.getName(), project.getVersion() ) + ) ); + + final SourceSet mainSourceSet = getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); + + outputDirectory = project.getObjects().directoryProperty(); + outputDirectory.convention(mainSourceSet.getJava().getDestinationDirectory()); + + sourceDirectory = project.getObjects().directoryProperty(); + sourceDirectory.convention(mainSourceSet.getJava().getSourceDirectories().getElements().map(QuarkusPluginExtension::lastDirectory)); + + workingDirectory = project.getObjects().directoryProperty(); + workingDirectory.convention(outputDirectory); + + outputConfigDirectory = project.getObjects().directoryProperty(); + outputConfigDirectory.convention(mainSourceSet.getResources().getDestinationDirectory()); + this.sourceSetExtension = new SourceSetExtension(); } @@ -116,62 +139,74 @@ public Path appJarOrClasses() { return classesDir; } - public File outputDirectory() { - if (outputDirectory == null) { - outputDirectory = getLastFile(getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput() - .getClassesDirs()); - } + public DirectoryProperty getOutputDirectory() { return outputDirectory; } + public File outputDirectory() { + return getOutputDirectory().get().getAsFile(); + } + public void setOutputDirectory(String outputDirectory) { - this.outputDirectory = new File(outputDirectory); + this.outputDirectory.set(new File(outputDirectory)); } - public File outputConfigDirectory() { - if (outputConfigDirectory == null) { - outputConfigDirectory = getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput() - .getResourcesDir(); - } + public DirectoryProperty getOutputConfigDirectory() { return outputConfigDirectory; } + public File outputConfigDirectory() { + return getOutputConfigDirectory().get().getAsFile(); + } + public void setOutputConfigDirectory(String outputConfigDirectory) { - this.outputConfigDirectory = new File(outputConfigDirectory); + this.outputConfigDirectory.set(new File(outputConfigDirectory)); + } + + public DirectoryProperty getSourceDirectory() { + return sourceDirectory; } public File sourceDir() { - if (sourceDir == null) { - sourceDir = getLastFile(getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getAllJava() - .getSourceDirectories()); - } - return sourceDir; + return getSourceDirectory().get().getAsFile(); } public void setSourceDir(String sourceDir) { - this.sourceDir = new File(sourceDir); + this.sourceDirectory.set(new File(sourceDir)); + } + + public DirectoryProperty getWorkingDirectory() { + return workingDirectory; } public File workingDir() { - if (workingDir == null) { - workingDir = outputDirectory(); - } - return workingDir; + return getWorkingDirectory().get().getAsFile(); } public void setWorkingDir(String workingDir) { - this.workingDir = new File(workingDir); + this.workingDirectory.set(new File(workingDir)); } - public String finalName() { - if (finalName == null || finalName.length() == 0) { - this.finalName = String.format("%s-%s", project.getName(), project.getVersion()); - } + /** + * The name of the application - `${project.name}-${project.version}` by default + */ + public Property getFinalName() { return finalName; } - public void setFinalName(String finalName) { - this.finalName = finalName; + /** + * @see #getFinalName() + */ + public String finalName() { + return finalName.get(); + } + + /** + * Setter for {@link #getFinalName()} + */ + @Deprecated + public void setFinalName(String value) { + finalName.set( value ); } public void sourceSets(Action action) { @@ -213,7 +248,7 @@ public ApplicationModel getApplicationModel(LaunchMode mode) { * Returns the last file from the specified {@link FileCollection}. * Needed for the Scala plugin. */ - private File getLastFile(FileCollection fileCollection) { + public static File getLastFile(FileCollection fileCollection) { File result = null; for (File f : fileCollection) { if (result == null || f.exists()) { @@ -223,12 +258,32 @@ private File getLastFile(FileCollection fileCollection) { return result; } + /** + * Returns the last file from the specified {@link FileCollection}. + * Needed for the Scala plugin. + */ + public static Provider lastDirectoryProvider(FileCollection fileCollection) { + return fileCollection.getElements().map( QuarkusPluginExtension::lastDirectory ); + } + + public static Directory lastDirectory(Set locations) { + Directory result = null; + + for ( FileSystemLocation fileSystemLocation : locations ) { + if ( fileSystemLocation instanceof Directory ) { + result = (Directory) fileSystemLocation; + } + } + + return result; + } + /** * Convenience method to get the source sets associated with the current project. * * @return the source sets associated with the current project. */ private SourceSetContainer getSourceSets() { - return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); + return project.getExtensions().getByType(SourceSetContainer.class); } } diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java index 4e0ebddde3e86..bb40b1116fe00 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java @@ -2,7 +2,6 @@ import java.io.File; import java.io.Serializable; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -12,7 +11,10 @@ import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.file.FileCollection; +import org.gradle.api.file.RegularFile; import org.gradle.api.java.archives.Attributes; +import org.gradle.api.provider.ListProperty; +import org.gradle.api.provider.Provider; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Internal; @@ -38,11 +40,28 @@ public class QuarkusBuild extends QuarkusTask { private static final String MANIFEST_SECTIONS_PROPERTY_PREFIX = "quarkus.package.manifest.manifest-sections"; private static final String MANIFEST_ATTRIBUTES_PROPERTY_PREFIX = "quarkus.package.manifest.attributes"; - private List ignoredEntries = new ArrayList<>(); - private Manifest manifest = new Manifest(); + private final Manifest manifest = new Manifest(); + private final ListProperty ignoredEntries; + private final Provider runnerJar; + private final Provider nativeRunner; + private final Provider fastJar; public QuarkusBuild() { super("Quarkus builds a runner jar based on the build jar"); + + ignoredEntries = getProject().getObjects().listProperty(String.class); + + runnerJar = getProject().getLayout().getBuildDirectory().file( runnerJarName() ); + nativeRunner = getProject().getLayout().getBuildDirectory().file( nativeRunnerName() ); + fastJar = getProject().getLayout().getBuildDirectory().file( "quarkus-app" ); + } + + private Provider runnerJarName() { + return extension().getFinalName().map( (finalName) -> finalName + "-runner.jar" ); + } + + private Provider nativeRunnerName() { + return extension().getFinalName().map( (finalName) -> finalName + "-runner" ); } public QuarkusBuild nativeArgs(Action> action) { @@ -54,16 +73,21 @@ public QuarkusBuild nativeArgs(Action> action) { return this; } - @Optional @Input - public List getIgnoredEntries() { + @Optional + @Option(description = "When using the uber-jar option, this option can be used to " + + "specify one or more entries that should be excluded from the final jar", option = "ignored-entry") + public ListProperty getIgnoredEntriesList() { return ignoredEntries; } - @Option(description = "When using the uber-jar option, this option can be used to " - + "specify one or more entries that should be excluded from the final jar", option = "ignored-entry") - public void setIgnoredEntries(List ignoredEntries) { - this.ignoredEntries.addAll(ignoredEntries); + @Internal + public List getIgnoredEntries() { + return ignoredEntries.get(); + } + + public void setIgnoredEntries(List values) { + ignoredEntries.addAll(values); } @Classpath @@ -108,18 +132,48 @@ public QuarkusBuild manifest(Action action) { } @OutputFile + public Provider getRunnerJarFile() { + return runnerJar; + } + + /** + * Same as {@link #getRunnerJarFile()}, except this method resolves the value. + *

+ * Prefer {@link #getRunnerJarFile()} for delayed configuration + */ + @Internal public File getRunnerJar() { - return new File(getProject().getBuildDir(), extension().finalName() + "-runner.jar"); + return getRunnerJarFile().get().getAsFile(); } @OutputFile + public Provider getNativeRunnerFile() { + return nativeRunner; + } + + /** + * Same as {@link #getNativeRunnerFile()}, except this method resolves the value. + *

+ * Prefer {@link #getNativeRunnerFile()} for delayed configuration + */ + @Internal public File getNativeRunner() { - return new File(getProject().getBuildDir(), extension().finalName() + "-runner"); + return getNativeRunnerFile().get().getAsFile(); } @OutputDirectory + public Provider getFastJarFile() { + return fastJar; + } + + /** + * Same as {@link #getFastJarFile()}, except this method resolves the value. + *

+ * Prefer {@link #getFastJarFile()} for delayed configuration + */ + @Internal public File getFastJar() { - return new File(getProject().getBuildDir(), "quarkus-app"); + return getFastJarFile().get().getAsFile(); } @TaskAction @@ -133,8 +187,8 @@ public void buildQuarkus() { } final Properties effectiveProperties = getBuildSystemProperties(appModel.getAppArtifact()); - if (ignoredEntries != null && ignoredEntries.size() > 0) { - String joinedEntries = String.join(",", ignoredEntries); + if (!ignoredEntries.get().isEmpty()) { + String joinedEntries = String.join(",", ignoredEntries.get()); effectiveProperties.setProperty("quarkus.package.user-configured-ignored-entries", joinedEntries); } diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java index c87d690f71ff6..f481e51bb7b5b 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java @@ -11,15 +11,12 @@ import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; - import javax.inject.Inject; -import org.apache.tools.ant.types.Commandline; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; @@ -27,15 +24,24 @@ import org.gradle.api.artifacts.Dependency; import org.gradle.api.artifacts.ModuleVersionIdentifier; import org.gradle.api.artifacts.ResolvedArtifact; +import org.gradle.api.file.Directory; +import org.gradle.api.file.DirectoryProperty; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.plugins.JavaPluginExtension; +import org.gradle.api.provider.ListProperty; +import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.CompileClasspath; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputDirectory; +import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Optional; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; +import org.gradle.api.tasks.SourceSet; +import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.options.Option; @@ -61,40 +67,60 @@ import io.quarkus.maven.dependency.ResolvedDependency; import io.quarkus.paths.PathList; import io.quarkus.runtime.LaunchMode; +import org.apache.tools.ant.types.Commandline; public class QuarkusDev extends QuarkusTask { public static final String IO_QUARKUS_DEVMODE_ARGS = "io.quarkus.devmode-args"; - private Set filesIncludedInClasspath = new HashSet<>(); + private final SourceSet mainSourceSet; - protected Configuration quarkusDevConfiguration; + private final Set filesIncludedInClasspath = new HashSet<>(); - private File buildDir; + protected Configuration quarkusDevConfiguration; - private String sourceDir; + private final DirectoryProperty sourceDirectory; - private String workingDir; + private final DirectoryProperty workingDirectory; - private List jvmArgs; + private final ListProperty jvmArgs; - private boolean preventnoverify = false; + private final Property preventNoVerify; - private List args = new LinkedList(); + private final ListProperty args; - private List compilerArgs = new LinkedList<>(); + private final ListProperty compilerArgs; - private CompilerOptions compilerOptions = new CompilerOptions(); + private final CompilerOptions compilerOptions = new CompilerOptions(); - private boolean shouldPropagateJavaCompilerArgs = true; + private final Property shouldPropagateJavaCompilerArgs; @Inject public QuarkusDev() { - super("Development mode: enables hot deployment with background compilation"); + this("Development mode: enables hot deployment with background compilation"); } public QuarkusDev(String name) { super(name); + + final SourceSetContainer sourceSets = getProject().getExtensions().getByType(SourceSetContainer.class); + mainSourceSet = sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME); + + sourceDirectory = getProject().getObjects().directoryProperty(); + sourceDirectory.convention(extension().getSourceDirectory()); + + workingDirectory = getProject().getObjects().directoryProperty(); + workingDirectory.convention(extension().getWorkingDirectory()); + + preventNoVerify = getProject().getObjects().property(Boolean.class); + preventNoVerify.convention(false); + + args = getProject().getObjects().listProperty(String.class); + compilerArgs = getProject().getObjects().listProperty(String.class); + jvmArgs = getProject().getObjects().listProperty(String.class); + + shouldPropagateJavaCompilerArgs = getProject().getObjects().property(Boolean.class); + shouldPropagateJavaCompilerArgs.convention(true); } @CompileClasspath @@ -108,66 +134,84 @@ public void setQuarkusDevConfiguration(Configuration quarkusDevConfiguration) { @InputDirectory @Optional + @PathSensitive(PathSensitivity.RELATIVE) + public Provider getBuildDirectory() { + return getProject().getLayout().getBuildDirectory(); + } + + @Internal public File getBuildDir() { - if (buildDir == null) { - buildDir = getProject().getBuildDir(); - } - return buildDir; + return getBuildDirectory().get().getAsFile(); } - public void setBuildDir(File buildDir) { - this.buildDir = buildDir; + @InputFiles + @PathSensitive(PathSensitivity.RELATIVE) + public Provider getClassesDirectory() { + return mainSourceSet.getJava().getClassesDirectory(); } @Optional @InputDirectory + @PathSensitive(PathSensitivity.RELATIVE) + public DirectoryProperty getSourceDirectory() { + return sourceDirectory; + } + + @Internal public File getSourceDir() { - if (sourceDir == null) { - return extension().sourceDir(); - } else { - return new File(sourceDir); - } + return getSourceDirectory().get().getAsFile(); } @Option(description = "Set source directory", option = "source-dir") public void setSourceDir(String sourceDir) { - this.sourceDir = sourceDir; + sourceDirectory.set(new File(sourceDir)); } - @Input - // @InputDirectory this breaks kotlin projects, the working dir at this stage will be evaluated to 'classes/java/main' instead of 'classes/kotlin/main' + @InputDirectory + @PathSensitive(PathSensitivity.RELATIVE) + public DirectoryProperty getWorkingDirectory() { + return workingDirectory; + } + + @Internal public String getWorkingDir() { - if (workingDir == null) { - return extension().workingDir().toString(); - } else { - return workingDir; - } + return getWorkingDirectory().get().getAsFile().toString(); } @Option(description = "Set working directory", option = "working-dir") public void setWorkingDir(String workingDir) { - this.workingDir = workingDir; + getWorkingDirectory().set(new File(workingDir)); } @Optional @Input - public List getJvmArgs() { + public ListProperty getJvmArguments() { return jvmArgs; } + @Internal + public List getJvmArgs() { + return jvmArgs.get(); + } + @Option(description = "Set JVM arguments", option = "jvm-args") public void setJvmArgs(List jvmArgs) { - this.jvmArgs = jvmArgs; + this.jvmArgs.set(jvmArgs); } @Optional @Input - public List getArgs() { + public ListProperty getArguments() { return args; } + @Internal + public List getArgs() { + return args.get(); + } + public void setArgs(List args) { - this.args = args; + this.args.set(args); } @Option(description = "Set application arguments", option = "quarkus-args") @@ -176,26 +220,35 @@ public void setArgsString(String argsString) { } @Input + public Property getPreventNoVerify() { + return preventNoVerify; + } + + @Internal public boolean isPreventnoverify() { - return preventnoverify; + return getPreventNoVerify().get(); } @Option(description = "value is intended to be set to true when some generated bytecode is" + " erroneous causing the JVM to crash when the verify:none option is set " + "(which is on by default)", option = "prevent-noverify") - public void setPreventnoverify(boolean preventnoverify) { - this.preventnoverify = preventnoverify; + public void setPreventnoverify(boolean preventNoVerify) { + this.preventNoVerify.set(preventNoVerify); } @Optional @Input - public List getCompilerArgs() { + public ListProperty getCompilerArguments() { return compilerArgs; } + public List getCompilerArgs() { + return getCompilerArguments().get(); + } + @Option(description = "Additional parameters to pass to javac when recompiling changed source files", option = "compiler-args") public void setCompilerArgs(List compilerArgs) { - this.compilerArgs = compilerArgs; + getCompilerArguments().set(compilerArgs); } @Internal @@ -333,7 +386,7 @@ private QuarkusDevModeLauncher newLauncher() throws Exception { builder.compilerOptions(compilerOptions.getName(), compilerOptions.getArgs()); } - if (getCompilerArgs().isEmpty() && shouldPropagateJavaCompilerArgs) { + if (getCompilerArgs().isEmpty() && shouldPropagateJavaCompilerArgs.get()) { getJavaCompileTask() .map(compileTask -> compileTask.getOptions().getCompilerArgs()) .ifPresent(args -> builder.compilerOptions("java", args)); @@ -354,8 +407,8 @@ private QuarkusDevModeLauncher newLauncher() throws Exception { extension().outputDirectory().mkdirs(); - if (!args.isEmpty()) { - builder.applicationArgs(String.join(" ", args)); + if (!args.get().isEmpty()) { + builder.applicationArgs(String.join(" ", args.get())); } return builder.build(); @@ -544,6 +597,6 @@ private java.util.Optional getJavaCompileTask() { } public void shouldPropagateJavaCompilerArgs(boolean shouldPropagateJavaCompilerArgs) { - this.shouldPropagateJavaCompilerArgs = shouldPropagateJavaCompilerArgs; + this.shouldPropagateJavaCompilerArgs.set(shouldPropagateJavaCompilerArgs); } } From aa6e59d2cf13c2f4e993664a8f021c2321ae4579 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Tue, 17 May 2022 07:18:18 -0500 Subject: [PATCH 2/4] formatting --- .../extension/QuarkusPluginExtension.java | 20 +++++++++---------- .../io/quarkus/gradle/tasks/QuarkusBuild.java | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java index 503bfe4d24794..6e26722719356 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java @@ -52,10 +52,9 @@ public class QuarkusPluginExtension { public QuarkusPluginExtension(Project project) { this.project = project; - finalName = project.getObjects().property( String.class ); - finalName.convention( project.provider( - () -> String.format("%s-%s", project.getName(), project.getVersion() ) - ) ); + finalName = project.getObjects().property(String.class); + finalName.convention(project.provider( + () -> String.format("%s-%s", project.getName(), project.getVersion()))); final SourceSet mainSourceSet = getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); @@ -63,7 +62,8 @@ public QuarkusPluginExtension(Project project) { outputDirectory.convention(mainSourceSet.getJava().getDestinationDirectory()); sourceDirectory = project.getObjects().directoryProperty(); - sourceDirectory.convention(mainSourceSet.getJava().getSourceDirectories().getElements().map(QuarkusPluginExtension::lastDirectory)); + sourceDirectory.convention( + mainSourceSet.getJava().getSourceDirectories().getElements().map(QuarkusPluginExtension::lastDirectory)); workingDirectory = project.getObjects().directoryProperty(); workingDirectory.convention(outputDirectory); @@ -198,7 +198,7 @@ public Property getFinalName() { * @see #getFinalName() */ public String finalName() { - return finalName.get(); + return finalName.get(); } /** @@ -206,7 +206,7 @@ public String finalName() { */ @Deprecated public void setFinalName(String value) { - finalName.set( value ); + finalName.set(value); } public void sourceSets(Action action) { @@ -263,14 +263,14 @@ public static File getLastFile(FileCollection fileCollection) { * Needed for the Scala plugin. */ public static Provider lastDirectoryProvider(FileCollection fileCollection) { - return fileCollection.getElements().map( QuarkusPluginExtension::lastDirectory ); + return fileCollection.getElements().map(QuarkusPluginExtension::lastDirectory); } public static Directory lastDirectory(Set locations) { Directory result = null; - for ( FileSystemLocation fileSystemLocation : locations ) { - if ( fileSystemLocation instanceof Directory ) { + for (FileSystemLocation fileSystemLocation : locations) { + if (fileSystemLocation instanceof Directory) { result = (Directory) fileSystemLocation; } } diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java index bb40b1116fe00..85408abce1eff 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java @@ -51,17 +51,17 @@ public QuarkusBuild() { ignoredEntries = getProject().getObjects().listProperty(String.class); - runnerJar = getProject().getLayout().getBuildDirectory().file( runnerJarName() ); - nativeRunner = getProject().getLayout().getBuildDirectory().file( nativeRunnerName() ); - fastJar = getProject().getLayout().getBuildDirectory().file( "quarkus-app" ); + runnerJar = getProject().getLayout().getBuildDirectory().file(runnerJarName()); + nativeRunner = getProject().getLayout().getBuildDirectory().file(nativeRunnerName()); + fastJar = getProject().getLayout().getBuildDirectory().file("quarkus-app"); } private Provider runnerJarName() { - return extension().getFinalName().map( (finalName) -> finalName + "-runner.jar" ); + return extension().getFinalName().map((finalName) -> finalName + "-runner.jar"); } private Provider nativeRunnerName() { - return extension().getFinalName().map( (finalName) -> finalName + "-runner" ); + return extension().getFinalName().map((finalName) -> finalName + "-runner"); } public QuarkusBuild nativeArgs(Action> action) { From be0e353e290ce562983fb58d80aa3de4978a3992 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Tue, 17 May 2022 14:49:54 -0500 Subject: [PATCH 3/4] formatting --- .../src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java | 6 +++--- .../src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java index 85408abce1eff..0bfd52e982621 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java @@ -138,7 +138,7 @@ public Provider getRunnerJarFile() { /** * Same as {@link #getRunnerJarFile()}, except this method resolves the value. - *

+ *

* Prefer {@link #getRunnerJarFile()} for delayed configuration */ @Internal @@ -153,7 +153,7 @@ public Provider getNativeRunnerFile() { /** * Same as {@link #getNativeRunnerFile()}, except this method resolves the value. - *

+ *

* Prefer {@link #getNativeRunnerFile()} for delayed configuration */ @Internal @@ -168,7 +168,7 @@ public Provider getFastJarFile() { /** * Same as {@link #getFastJarFile()}, except this method resolves the value. - *

+ *

* Prefer {@link #getFastJarFile()} for delayed configuration */ @Internal diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java index f481e51bb7b5b..23e2745b7aac7 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java @@ -15,8 +15,10 @@ import java.util.Map; import java.util.Properties; import java.util.Set; + import javax.inject.Inject; +import org.apache.tools.ant.types.Commandline; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; @@ -67,7 +69,6 @@ import io.quarkus.maven.dependency.ResolvedDependency; import io.quarkus.paths.PathList; import io.quarkus.runtime.LaunchMode; -import org.apache.tools.ant.types.Commandline; public class QuarkusDev extends QuarkusTask { From 9d19b638eca208b2c814dcd97dcd0a4f95f91b7c Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Tue, 17 May 2022 19:19:54 -0500 Subject: [PATCH 4/4] Fix plugin validation error --- .../src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java | 1 + 1 file changed, 1 insertion(+) diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java index 23e2745b7aac7..43b3964b01f77 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java @@ -243,6 +243,7 @@ public ListProperty getCompilerArguments() { return compilerArgs; } + @Internal public List getCompilerArgs() { return getCompilerArguments().get(); }