goomph icon indicating copy to clipboard operation
goomph copied to clipboard

vscode support: dagger annotation processor

Open jeusdi opened this issue 5 years ago • 3 comments

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:

enter image description here

Gradle is running fine:

$ gradle compileJava

BUILD SUCCESSFUL in 3s
1 actionable task: 1 executed

Any ideas?

jeusdi avatar Apr 01 '20 18:04 jeusdi

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.

nedtwigg avatar Apr 01 '20 19:04 nedtwigg

#125 has some info which may be relevant.

nedtwigg avatar Jul 02 '20 17:07 nedtwigg

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.

cantwait avatar Aug 13 '21 12:08 cantwait