0

我有一个使用一些注释的简单应用程序“客户端”,其中包含我编写的注释处理器的 .jar,应该使用 JavaPoet 将 java 类写入控制台。以下是我在“客户端”应用程序中为 build.gradle 所做的配置:

    repositories {
        mavenCentral()
        mavenLocal()
    }

    dependencies {
        compile fileTree(dir: 'libs', include: 'AnnotationProcessor-1.0-SNAPSHOT.jar')
        annotationProcessor fileTree(dir: 'libs', include: 'AnnotationProcessor-1.0-SNAPSHOT.jar')
        compile group: 'com.squareup', name: 'javapoet', version: '1.13.0'
    }

我已经在项目中启用了注释处理器,并给出了该注释处理器的完全限定路径。但是,当我进行 gradle 构建时,注释处理器运行并且我得到:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> java.lang.NoClassDefFoundError: com/squareup/javapoet/MethodSpec

不知道我在这里做错了什么。

4

1 回答 1

1

我能够通过将注释处理器 jar 发布到本地 maven 来解决这个特定问题,方法是在其中包含以下内容build.gradle

apply plugin: "maven-publish"

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

执行:./gradlew publishToMavenLocal将其发布到本地 maven。然后,现在客户项目build.gradle如下:

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile fileTree(dir: 'libs', include: 'AnnotationProcessor-1.0-SNAPSHOT.jar')
    annotationProcessor('org.example:AnnotationProcessor:1.0-SNAPSHOT')
}

这解决了这个问题。

于 2021-03-26T08:54:24.773 回答