vscode support: dagger annotation processor
I've created a gradle project. This is build-gradle:
plugins {
id 'java'
id "com.diffplug.eclipse.apt" version "3.22.0"
}
repositories {
jcenter()
}
dependencies {
implementation 'com.amazonaws:aws-lambda-java-core:1.2.0'
implementation 'com.amazonaws:aws-lambda-java-events:2.2.7'
implementation 'com.amazonaws:aws-java-sdk-s3:1.11.754'
implementation 'com.amazonaws:aws-java-sdk-dynamodb:1.11.754'
implementation 'org.apache.logging.log4j:log4j-api:2.13.0'
implementation 'org.apache.logging.log4j:log4j-core:2.13.0'
runtimeOnly 'org.apache.logging.log4j:log4j-slf4j18-impl:2.13.0'
runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'
implementation 'com.opencsv:opencsv:5.1'
implementation 'com.google.dagger:dagger:2.27'
annotationProcessor 'com.google.dagger:dagger-compiler:2.27'
testImplementation('org.junit.jupiter:junit-jupiter:5.6.1')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
task buildZip(type: Zip) {
from compileJava
from processResources
into('lib') {
from configurations.runtimeClasspath
}
}
build.dependsOn buildZip
As you can see I've set up dagger dependencies:
implementation 'com.google.dagger:dagger:2.27'
annotationProcessor 'com.google.dagger:dagger-compiler:2.27'
My component is:
@Component(modules = DaggerTransporterModule.class)
public interface TransporterMaker {
SOCTransporter maker();
}
After having performed an gradle build, dagger artifacts are generated:
I've took a look on generated code:
$ tree build/classes/java/main/net/gencat/soc/lambda/config/
build/classes/java/main/net/gencat/soc/lambda/config/
├── DaggerTransporterMaker$Builder.class
├── DaggerTransporterMaker.class
├── DaggerTransporterModule.class
├── DaggerTransporterModule_ProvideContactServiceFactory.class
├── DaggerTransporterModule_ProvideCSVDaoFactory.class
├── DaggerTransporterModule_ProvideCSVDaoFactory$InstanceHolder.class
├── DaggerTransporterModule_ProvideDynamoDBDaoFactory.class
├── DaggerTransporterModule_ProvideDynamoDBDaoFactory$InstanceHolder.class
├── DaggerTransporterModule_ProvideS3DaoFactory.class
├── DaggerTransporterModule_ProvideS3DaoFactory$InstanceHolder.class
└── TransporterMaker.class
As you can see, dagger artifacts are generated correctly.
Nevertheless, I'm not able to use them inside vscode:
Gradle is running fine:
$ gradle compileJava
BUILD SUCCESSFUL in 3s
1 actionable task: 1 executed
Any ideas?
I haven't used vscode for java development, so I don't have much to offer. Happy to merge fixes to code or docs.
Off the top of my head, maybe you need plugin 'eclipse', and to run ./gradlew eclipse at some point? The plugin works by modifying the eclipse project - I don't know how/if vscode consumes that info.
#125 has some info which may be relevant.
Hi @jeusdi have you found any solution to this problem? I just came across this situation and it's a bit disappointing. xD
Thanks @nedtwigg for the reference will check #125
Note: I added eclipse plugin but it did not work.
