Skip to content

Commit 05725af

Browse files
committed
Fixed Project name captured at configuration time for configuration-cache safety
1 parent e11617d commit 05725af

4 files changed

Lines changed: 26 additions & 16 deletions

File tree

src/main/java/com/formkiq/gradle/GraalvmNativePlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public void apply(final Project project) {
4242
task.setExtension(ext);
4343
task.usesService(svc);
4444
task.getBuildDirectory().set(project.getLayout().getBuildDirectory().dir("graalvm"));
45+
task.getProjectName().set(project.getName());
4546

4647
// ✅ Opt-in: task will only run if configured
4748
task.onlyIf(t -> {

src/main/java/com/formkiq/gradle/GraalvmNativeTask.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.gradle.api.DefaultTask;
3838
import org.gradle.api.file.ConfigurableFileCollection;
3939
import org.gradle.api.file.DirectoryProperty;
40+
import org.gradle.api.provider.Property;
4041
import org.gradle.api.resources.ResourceException;
4142
import org.gradle.api.tasks.CacheableTask;
4243
import org.gradle.api.tasks.Classpath;
@@ -80,6 +81,14 @@ public abstract class GraalvmNativeTask extends DefaultTask {
8081
@OutputDirectory
8182
public abstract DirectoryProperty getBuildDirectory();
8283

84+
/**
85+
* Project name captured at configuration time for configuration-cache safety.
86+
*
87+
* @return Property
88+
*/
89+
@Input
90+
public abstract Property<String> getProjectName();
91+
8392
/**
8493
* Extension configuration fingerprint for task caching.
8594
*
@@ -214,8 +223,9 @@ public void createImage() {
214223
}
215224

216225
executor.runGuInstallation(getExecOperations(), graalvmBaseDir);
217-
executor.runNativeImage(getExecOperations(), getProject(), getBuildDirectoryAsPath(),
218-
graalvmBaseDir.toFile(), path.toFile(), getRuntimeClasspath());
226+
executor.runNativeImage(getExecOperations(), getProjectName().get(),
227+
getBuildDirectoryAsPath(), graalvmBaseDir.toFile(), path.toFile(),
228+
getRuntimeClasspath());
219229
}
220230

221231
} catch (IOException | InterruptedException e) {

src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.util.Arrays;
2828
import java.util.List;
2929
import org.apache.tools.ant.helper.DefaultExecutor;
30-
import org.gradle.api.Project;
3130
import org.gradle.api.file.ConfigurableFileCollection;
3231
import org.gradle.internal.os.OperatingSystem;
3332
import org.gradle.process.ExecOperations;
@@ -54,15 +53,15 @@ public NativeImageExecutor(final GraalvmNativeExtension ext) {
5453
* Build Graalvm Image.
5554
*
5655
* @param execOperations {@link ExecOperations}
57-
* @param project {@link Project}
56+
* @param projectName project name
5857
* @param buildDir {@link Path}
5958
* @param graalvmBaseDir {@link File}
6059
* @param outputDir {@link File}
6160
*/
62-
public void buildGraalvmImage(final ExecOperations execOperations, final Project project,
61+
public void buildGraalvmImage(final ExecOperations execOperations, final String projectName,
6362
final Path buildDir, final File graalvmBaseDir, File outputDir) {
6463

65-
List<String> args = getBuildGraalvmImageArguments(project, buildDir);
64+
List<String> args = getBuildGraalvmImageArguments(projectName, buildDir);
6665

6766
execOperations.exec(arg0 -> {
6867
String executeable =
@@ -86,14 +85,14 @@ public void buildGraalvmJavaMain(final Path buildDir,
8685
new RuntimeDependenciesDecompress().apply(buildDir, runtimeClasspath);
8786
}
8887

89-
List<String> getBuildGraalvmImageArguments(final Project project, final Path buildDir) {
88+
List<String> getBuildGraalvmImageArguments(final String projectName, final Path buildDir) {
9089

9190
List<String> args = new ArrayList<>(new GraalvmParameterToStrings().apply(this.extension));
9291

9392
String executableName = this.extension.getOutputFileName();
9493

9594
if (executableName != null) {
96-
args.add("-H:Name=" + getExecutableName(project));
95+
args.add("-H:Name=" + getExecutableName(projectName));
9796
}
9897

9998
args.addAll(new GraalvmClasspathArguments(buildDir).apply(this.extension));
@@ -103,9 +102,9 @@ List<String> getBuildGraalvmImageArguments(final Project project, final Path bui
103102
return args;
104103
}
105104

106-
private String getExecutableName(final Project project) {
105+
private String getExecutableName(final String projectName) {
107106
return this.extension.getOutputFileName() != null ? this.extension.getOutputFileName()
108-
: project.getName();
107+
: projectName;
109108
}
110109

111110
private Path getGraalBin(final File graalvmBaseDir) {
@@ -139,19 +138,19 @@ public void runGuInstallation(final ExecOperations execOperations, final Path gr
139138
* Run Native Image Command.
140139
*
141140
* @param execOperations {@link ExecOperations}
142-
* @param project {@link Project}
141+
* @param projectName project name
143142
* @param buildDir {@link Path}
144143
* @param graalvmBaseDir {@link Files}
145144
* @param outputDir {@link File}
146145
* @param runtimeClasspath {@link ConfigurableFileCollection}
147146
* @throws IOException IOException
148147
*/
149-
public void runNativeImage(final ExecOperations execOperations, final Project project,
148+
public void runNativeImage(final ExecOperations execOperations, final String projectName,
150149
final Path buildDir, final File graalvmBaseDir, File outputDir,
151150
final ConfigurableFileCollection runtimeClasspath) throws IOException {
152151

153152
buildGraalvmJavaMain(buildDir, runtimeClasspath);
154153

155-
buildGraalvmImage(execOperations, project, buildDir, graalvmBaseDir, outputDir);
154+
buildGraalvmImage(execOperations, projectName, buildDir, graalvmBaseDir, outputDir);
156155
}
157156
}

src/test/java/com/formkiq/gradle/internal/NativeImageExecutorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void testGetBuildGraalvmImageArguments01() {
3232
NativeImageExecutor executor = new NativeImageExecutor(extension);
3333

3434
// when
35-
List<String> args = executor.getBuildGraalvmImageArguments(project, fakeBuildDir);
35+
List<String> args = executor.getBuildGraalvmImageArguments(project.getName(), fakeBuildDir);
3636

3737
// then
3838
assertTrue(args.stream().anyMatch(a -> a.equals("-H:Name=my-app")),
@@ -49,7 +49,7 @@ void testGetBuildGraalvmImageArguments02() {
4949
NativeImageExecutor executor = new NativeImageExecutor(extension);
5050

5151
// when
52-
List<String> args = executor.getBuildGraalvmImageArguments(project, fakeBuildDir);
52+
List<String> args = executor.getBuildGraalvmImageArguments(project.getName(), fakeBuildDir);
5353

5454
// then
5555
assertTrue(args.stream().noneMatch(a -> a.startsWith("-H:Name=")),
@@ -67,7 +67,7 @@ void testGetBuildGraalvmImageArguments03() {
6767
NativeImageExecutor executor = new NativeImageExecutor(extension);
6868

6969
// when
70-
List<String> args = executor.getBuildGraalvmImageArguments(project, fakeBuildDir);
70+
List<String> args = executor.getBuildGraalvmImageArguments(project.getName(), fakeBuildDir);
7171

7272
// then
7373
final int expected = 7;

0 commit comments

Comments
 (0)