Skip to content

Commit 982ebb3

Browse files
committed
Fix "Cannot run Project.afterEvaluate(Action) when the project is already evaluated" issue when running from Xcode
1 parent ba5a32f commit 982ebb3

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

src/main/java/org/moe/gradle/tasks/ResourcePackager.java

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.moe.gradle.tasks;
1818

19+
import org.gradle.api.Action;
1920
import org.gradle.api.Project;
2021
import org.gradle.api.Rule;
2122
import org.gradle.api.file.CopySpec;
@@ -96,28 +97,28 @@ private static Jar create(@NotNull MoePlugin plugin, @NotNull SourceSet sourceSe
9697
final ProGuard proguardTask = plugin.getTaskBy(ProGuard.class, sourceSet, mode);
9798
resourcePackagerTask.dependsOn(proguardTask);
9899

99-
// Update settings
100-
resourcePackagerTask.setDestinationDir(project.file(project.getBuildDir().toPath().resolve(out).toFile()));
101-
resourcePackagerTask.setArchiveName("application.jar");
102-
resourcePackagerTask.from(project.zipTree(proguardTask.getOutJar()));
103-
resourcePackagerTask.exclude("**/*.class");
100+
Action<Project> configureTask = _project -> {
101+
// Update settings
102+
resourcePackagerTask.setDestinationDir(project.file(project.getBuildDir().toPath().resolve(out).toFile()));
103+
resourcePackagerTask.setArchiveName("application.jar");
104+
resourcePackagerTask.from(project.zipTree(proguardTask.getOutJar()));
105+
resourcePackagerTask.exclude("**/*.class");
104106

105-
project.afterEvaluate(_project -> {
106107
// When using full trim, ProGuard will copy the the resources from the common jar
107108
switch (ext.proguard.getLevelRaw()) {
108-
case ProGuardOptions.LEVEL_APP:
109-
resourcePackagerTask.from(_project.zipTree(sdk.getCoreJar()));
110-
if (ext.getPlatformJar() != null){
111-
resourcePackagerTask.from(_project.zipTree(ext.getPlatformJar()));
112-
}
113-
break;
114-
case ProGuardOptions.LEVEL_PLATFORM:
115-
resourcePackagerTask.from(_project.zipTree(sdk.getCoreJar()));
116-
break;
117-
case ProGuardOptions.LEVEL_ALL:
118-
break;
119-
default:
120-
throw new IllegalStateException();
109+
case ProGuardOptions.LEVEL_APP:
110+
resourcePackagerTask.from(_project.zipTree(sdk.getCoreJar()));
111+
if (ext.getPlatformJar() != null) {
112+
resourcePackagerTask.from(_project.zipTree(ext.getPlatformJar()));
113+
}
114+
break;
115+
case ProGuardOptions.LEVEL_PLATFORM:
116+
resourcePackagerTask.from(_project.zipTree(sdk.getCoreJar()));
117+
break;
118+
case ProGuardOptions.LEVEL_ALL:
119+
break;
120+
default:
121+
throw new IllegalStateException();
121122
}
122123

123124
ext.packaging.getExcludes().forEach(resourcePackagerTask::exclude);
@@ -128,7 +129,14 @@ private static Jar create(@NotNull MoePlugin plugin, @NotNull SourceSet sourceSe
128129
SourceSet main = plugin.getJavaConvention().getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
129130
addResourceFromSources(ext, resourcePackagerTask, main);
130131
}
131-
});
132+
};
133+
134+
// Make sure the project is configured after project is evaluated
135+
if (project.getState().getExecuted()) {
136+
configureTask.execute(project);
137+
} else {
138+
project.afterEvaluate(configureTask);
139+
}
132140

133141
return resourcePackagerTask;
134142
}

src/main/java/org/moe/gradle/utils/Mode.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,9 @@ public String getXcodeCompatibleName() {
5656
}
5757
throw new GradleException("Unknown configuration '" + name + "'");
5858
}
59+
60+
@Override
61+
public String toString() {
62+
return getXcodeCompatibleName();
63+
}
5964
}

0 commit comments

Comments
 (0)