I wrote a Gradle custom plugin. I have my plugin and consumer script are in seperate projects. Plugin compiled but consumer script doesn’t compiles because of dependency java.lang.ClassNotFoundException: javax.json.Json when executing . To be more specific, custom plugin includes a custom task class called “UploadGradleTask” (which extends DefaultTask). UploadGradeTask class has uploadTask method which calls another class for some action. That class is using some json parsing. Now, consumer script is giving ClassNotFoundException for javax.json.Json. Any tips to resolve this issue?
My build.gradle from consumer project:
buildscript {
repositories {
maven {
url uri(’…/…/…/…/repo’)
}
mavenLocal()
}
dependencies {
//Custom plugin class path. Group=com.testdependencies, artifactId=ttsclient, version=0.0.1-BUILD-SNAPSHOT
classpath ‘com.testdependencies:ttsclient:0.0.1-BUILD-SNAPSHOT’
}
}
apply plugin: ‘org.tts’
task uploadJacocoDump(type: org.ttsgradle.UploadGradleTask) {
println(“running consumer task!”)
}
org.tts.properties contents:
implementation-class=org.tts.client.ttsgradle.UploadGradlePlugin
Custom plugin:
package org.tts.client.ttsgradle;
import org.gradle.api.Project;
import java.util.List;
import org.gradle.api.Plugin;
public class UploadGradlePlugin implements Plugin < Project > {
@Override
public void apply(Project target) {
target.task(“uploadTask”);
}
}
Custom Task:
package org.tts.client.ttsgradle;
import org.gradle.api.tasks.TaskAction;
import java.util.Properties;
import org.gradle.api.DefaultTask;
public class UploadGradleTask extends DefaultTask {
@TaskAction
public void uploadTask() {
//This method calls a class that includes methods for json processing. It uses javax.json.Json
}
}
Like I mentioned, as a result of this, plugin project compiles and uploadArchives also deploys a jar file. However, consumer project failed on build with following message:
Caused by: java.lang.NoClassDefFoundError: javax/json/Json
at org.tts.client.ttsgradle.UploadGradleTask.getDumpsAndUpload
(UploadGradleTask.java:82)
at org.tts.client.ttsgradle.UploadGradleTask.uploadTask(Upload
GradleTask.java:100)
I appreciate any tips or suggestions.