diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index e9be69039..0608b9af0 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -26,5 +26,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/java/gradle/build.gradle.kts b/java/gradle/build.gradle.kts
index 9193c45d4..dcfc8bac4 100644
--- a/java/gradle/build.gradle.kts
+++ b/java/gradle/build.gradle.kts
@@ -5,8 +5,6 @@ plugins{
kotlin("jvm") version libs.versions.kotlin
}
-version = rootProject.version
-
repositories {
mavenCentral()
}
@@ -17,12 +15,14 @@ dependencies{
implementation(libs.composeGradlePlugin)
implementation(libs.kotlinGradlePlugin)
implementation(libs.kotlinComposePlugin)
+
+ testImplementation(libs.junit)
}
gradlePlugin{
plugins{
create("processing"){
- id = "org.processing.java.gradle"
+ id = "processing.java.gradle"
implementationClass = "org.processing.java.gradle.ProcessingPlugin"
}
}
diff --git a/java/gradle/example/build.gradle.kts b/java/gradle/example/build.gradle.kts
index 1dd4907f3..d0cb1919e 100644
--- a/java/gradle/example/build.gradle.kts
+++ b/java/gradle/example/build.gradle.kts
@@ -1,3 +1,3 @@
plugins{
- id("org.processing.java.gradle") version "4.4.0"
+ id("processing.java.gradle")
}
\ No newline at end of file
diff --git a/java/gradle/example/settings.gradle.kts b/java/gradle/example/settings.gradle.kts
index 588dcaf85..ee9c97e15 100644
--- a/java/gradle/example/settings.gradle.kts
+++ b/java/gradle/example/settings.gradle.kts
@@ -1,6 +1,5 @@
+rootProject.name = "processing-gradle-plugin-demo"
+
pluginManagement {
- repositories {
- mavenLocal()
- gradlePluginPortal()
- }
+ includeBuild("../../../")
}
\ No newline at end of file
diff --git a/java/gradle/src/main/kotlin/ProcessingPlugin.kt b/java/gradle/src/main/kotlin/ProcessingPlugin.kt
index 1d902b920..158af74f4 100644
--- a/java/gradle/src/main/kotlin/ProcessingPlugin.kt
+++ b/java/gradle/src/main/kotlin/ProcessingPlugin.kt
@@ -10,9 +10,7 @@ import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.tasks.JavaExec
import org.jetbrains.compose.ComposeExtension
-import org.jetbrains.compose.ComposePlugin
import org.jetbrains.compose.desktop.DesktopExtension
-import org.jetbrains.kotlin.konan.properties.saveToFile
import java.io.File
import java.util.*
import javax.inject.Inject
@@ -28,10 +26,13 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
project.plugins.apply("org.jetbrains.kotlin.jvm")
project.plugins.apply("org.jetbrains.kotlin.plugin.compose")
+ // TODO: Add to tests
project.dependencies.add("implementation", "org.processing:core:4.4.0")
+ // TODO: Add tests
project.dependencies.add("implementation", project.fileTree("src").apply { include("**/code/*.jar") })
// Base JOGL and Gluegen dependencies
+ // TODO: Add only if user is compiling for P2D or P3D
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:jogl-all-main:2.5.0")
project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt-main:2.5.0")
@@ -65,11 +66,8 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
application.nativeDistributions.modules("java.management")
}
}
-
// TODO: Also only do within Processing
- project.tasks.named("wrapper").configure {
- it.enabled = false
- }
+ project.tasks.findByName("wrapper")?.enabled = false
project.tasks.create("sketch").apply {
group = "processing"
@@ -116,7 +114,6 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
sourceSet.java.srcDir(outputDirectory)
// TODO: Support multiple sketches?
- // TODO: Preprocess PDE files in this step so we can add the library dependencies
val taskName = sourceSet.getTaskName("preprocess", "PDE")
project.tasks.register(taskName, ProcessingTask::class.java) { task ->
diff --git a/java/gradle/src/main/kotlin/ProcessingTask.kt b/java/gradle/src/main/kotlin/ProcessingTask.kt
index 66e493aa6..88041ee1c 100644
--- a/java/gradle/src/main/kotlin/ProcessingTask.kt
+++ b/java/gradle/src/main/kotlin/ProcessingTask.kt
@@ -13,7 +13,7 @@ import java.io.UncheckedIOException
import java.util.concurrent.Callable
import javax.inject.Inject
-abstract class ProcessingTask() : SourceTask() {
+abstract class ProcessingTask : SourceTask() {
@get:OutputDirectory
var outputDirectory: File? = null
@@ -62,6 +62,10 @@ abstract class ProcessingTask() : SourceTask() {
// TODO: Only import the libraries that are actually used
val importStatement = meta.importStatements
+
+// for (import in importStatement) {
+// project.dependencies.add("implementation", import)
+// }
}
}
diff --git a/java/gradle/src/test/kotlin/ProcessingPluginTest.kt b/java/gradle/src/test/kotlin/ProcessingPluginTest.kt
new file mode 100644
index 000000000..a98bc16d9
--- /dev/null
+++ b/java/gradle/src/test/kotlin/ProcessingPluginTest.kt
@@ -0,0 +1,48 @@
+import org.gradle.api.Task
+import org.gradle.testfixtures.ProjectBuilder
+import org.gradle.testkit.runner.GradleRunner
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
+
+class ProcessingPluginTest{
+ @Test
+ fun testPluginAddsSketchTask(){
+ val project = ProjectBuilder.builder().build()
+ project.pluginManager.apply("processing.java.gradle")
+
+ assert(project.tasks.getByName("sketch") is Task)
+ }
+ @JvmField
+ @Rule
+ val folder: TemporaryFolder = TemporaryFolder()
+
+ @Test
+ fun testPluginOutcome() {
+
+ val buildFile = folder.newFile("build.gradle.kts")
+ buildFile.writeText("""
+ plugins{
+ id("processing.java.gradle")
+ }
+ """.trimIndent())
+
+ val sketchFile = folder.newFile("sketch.pde")
+ sketchFile.writeText("""
+ void setup(){
+ size(100, 100);
+ }
+ void draw(){
+ background(0);
+ }
+ """.trimIndent())
+
+ val result = GradleRunner.create()
+ .withProjectDir(folder.root)
+ .withArguments("build")
+ .withPluginClasspath()
+ .build()
+
+ assert(folder.root.resolve(".processing/generated/pde/main").exists())
+ }
+}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index de948b468..5809665d7 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -12,4 +12,4 @@ include(
"java:libraries:pdf",
"java:libraries:serial",
"java:libraries:svg",
-)
+)
\ No newline at end of file