Sitelet https://github.com/Mindgamesnl/ehcache3/commit/c13ecda3a10a8e45c97c3b1d0da0436a4db438fe
Skip to content

Commit c13ecda

Browse files
committed
Introduce a SourceDirectorySet for Unsafe Java code and wire compilation appropriately (Avoid IDEA-321592)
1 parent 1da536c commit c13ecda

3 files changed

Lines changed: 50 additions & 15 deletions

File tree

‎build-logic/build.gradle‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ gradlePlugin {
3030
implementationClass = 'org.ehcache.build.EhcachePackage'
3131
}
3232

33+
unsafe {
34+
id = 'org.ehcache.build.plugins.unsafe'
35+
implementationClass = 'org.ehcache.build.plugins.UnsafeJavaPlugin'
36+
}
3337
variant {
3438
id = 'org.ehcache.build.plugins.variant'
3539
implementationClass = 'org.ehcache.build.plugins.VariantPlugin'
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.ehcache.build.plugins;
2+
3+
import org.gradle.api.Plugin;
4+
import org.gradle.api.Project;
5+
import org.gradle.api.file.SourceDirectorySet;
6+
import org.gradle.api.internal.lambdas.SerializableLambdas;
7+
import org.gradle.api.internal.tasks.DefaultSourceSet;
8+
import org.gradle.api.plugins.JavaBasePlugin;
9+
import org.gradle.api.plugins.JavaPluginExtension;
10+
import org.gradle.api.tasks.TaskProvider;
11+
import org.gradle.api.tasks.compile.JavaCompile;
12+
13+
import static org.gradle.api.plugins.internal.JvmPluginsHelper.configureOutputDirectoryForSourceSet;
14+
15+
public class UnsafeJavaPlugin implements Plugin<Project> {
16+
17+
public void apply(Project project) {
18+
project.getPluginManager().apply(JavaBasePlugin.class);
19+
project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets().all(sourceSet -> {
20+
SourceDirectorySet unsafeSource = project.getObjects().sourceDirectorySet("unsafe", ((DefaultSourceSet) sourceSet).getDisplayName() + " unsafe Java source");
21+
sourceSet.getExtensions().add("unsafe", unsafeSource);
22+
unsafeSource.srcDir("src/" + sourceSet.getName() + "/unsafe");
23+
sourceSet.getResources().getFilter().exclude(SerializableLambdas.spec(element -> unsafeSource.contains(element.getFile())));
24+
sourceSet.getAllJava().source(unsafeSource);
25+
sourceSet.getAllSource().source(unsafeSource);
26+
27+
TaskProvider<JavaCompile> unsafeCompile = project.getTasks().register(sourceSet.getCompileTaskName("unsafe"), JavaCompile.class, compile -> {
28+
compile.setDescription("Compiles the " + unsafeSource.getDisplayName() + ".");
29+
compile.setSource(unsafeSource);
30+
compile.setClasspath(sourceSet.getCompileClasspath());
31+
});
32+
33+
project.getTasks().named(sourceSet.getCompileJavaTaskName(), JavaCompile.class, compile -> {
34+
compile.setClasspath(compile.getClasspath().plus(project.files(unsafeSource.getClassesDirectory())));
35+
});
36+
37+
configureOutputDirectoryForSourceSet(sourceSet, unsafeSource, project, unsafeCompile, unsafeCompile.map(JavaCompile::getOptions));
38+
project.getTasks().named(sourceSet.getClassesTaskName(), (task) -> task.dependsOn(unsafeCompile));
39+
});
40+
}
41+
}

‎ehcache-impl/build.gradle‎

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

1717
plugins {
1818
id 'org.ehcache.build.internal-module'
19+
id 'org.ehcache.build.plugins.unsafe'
1920
}
2021

2122
publishing.publications.withType(MavenPublication) {
@@ -26,10 +27,9 @@ publishing.publications.withType(MavenPublication) {
2627
}
2728

2829
sourceSets {
29-
unsafe
30-
}
31-
32-
sourceSets {
30+
main {
31+
unsafe.srcDir 'src/unsafe/java'
32+
}
3333
slowTest {
3434
java.srcDir 'src/slow-test/java'
3535
resources.srcDir 'src/slow-test/resources'
@@ -58,15 +58,9 @@ dependencies {
5858
testImplementation 'org.ow2.asm:asm:6.2'
5959
testImplementation 'org.ow2.asm:asm-commons:6.2'
6060
testImplementation ("org.terracotta:statistics:$parent.statisticVersion")
61-
62-
unsafeImplementation project(':ehcache-api')
63-
api files(sourceSets.unsafe.output.classesDirs) {
64-
builtBy compileUnsafeJava
65-
}
6661
}
6762

6863
jar {
69-
from sourceSets.unsafe.output
7064
from "$rootDir/NOTICE"
7165
bnd (
7266
'Export-Package': '!org.ehcache.impl.internal.*, org.ehcache.impl.*, org.ehcache.config.builders, ' +
@@ -75,11 +69,7 @@ jar {
7569
)
7670
}
7771

78-
sourcesJar {
79-
from sourceSets.unsafe.allSource
80-
}
81-
82-
compileUnsafeJava {
72+
compileUnsafe {
8373
//no -Werror due to unsafe
8474
options.compilerArgs = ['-Xlint:all']
8575
}

0 commit comments

Comments
 (0)