在eclipse

时间:2018-03-23 15:55:16

标签: gradle annotation-processing

我从maven切换到gradle。

以下是我以前在pom.xml中的内容

        <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-proc:none</compilerArgument>
                </configuration>
        </plugin>
        <plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <id>process</id>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <phase>generate-sources</phase>
                </execution>
                <execution>
                    <id>process-test</id>
                    <goals>
                        <goal>process-test</goal>
                    </goals>
                    <phase>generate-test-sources</phase>
                    <configuration>
                        <sourceDirectory>./test</sourceDirectory>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>rockpalm.it</groupId>
                    <artifactId>ic2-annotation-processor</artifactId>
                    <version>1.2.1-SNAPSHOT</version>
                </dependency>
            </dependencies>
        </plugin>

我的build.gradle看起来像:

plugins {
  id "net.ltgt.apt" version "0.15"
  id 'net.ltgt.apt-eclipse' version '0.15' 
}
dependencies {
    annotationProcessor "rockpalm.it:ic2-annotation-processor:1.2.1-SNAPSHOT"
}
ext { 
    eclipseAptFolder = '.apt_generated'
    eclipseSettingsDir = file('.settings')
}

eclipse {
    jdt.file.withProperties { 
        it['org.eclipse.jdt.core.compiler.processAnnotations'] = 'enabled'
    }
}

tasks.eclipseJdt {
    doFirst {
        def aptPrefs = file("${eclipseSettingsDir}/org.eclipse.jdt.apt.core.prefs")
        aptPrefs.parentFile.mkdirs()

        aptPrefs.text = """\
    eclipse.preferences.version=1
    org.eclipse.jdt.apt.aptEnabled=true
    org.eclipse.jdt.apt.genSrcDir=${eclipseAptFolder}
    org.eclipse.jdt.apt.reconcileEnabled=true
    """.stripIndent()

        file('.factorypath').withWriter {
            new groovy.xml.MarkupBuilder(it).'factorypath' {
                project.configurations.annotationProcessor.each { dep->
                    factorypathentry(
                        kind:'EXTJAR',
                        id:dep.absolutePath,
                        enabled:true,
                        runInBatchMode:false
                    )
                }
            }
        }
    }
}

但是当我使用Gradle&gt;刷新gradle项目它没有使用我的注释处理器配置eclipse的.factory路径,它启用了它但没有在处理器列表上设置实际的处理器。

当我运行gradle构建时,我实际上可以在build / generated / source / apt / main / ...我的包/类中看到我生成的代码,但由于它在eclipse中没有启用,所以我什么都没有。 apt_generated文件夹。

修改 我得到gradle使用build.gradle的tasks.eclipseJdt部分正确构建factorypath但是eclipse似乎没有在.apt_generated中构建任何东西。如何调试eclipse gradle build以查看发生了什么?

感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:1)

您通常不需要插件示例中的eclipse配置关闭,只需使用:

plugins {
    id 'net.ltgt.apt' version '0.15'
    id 'net.ltgt.apt-eclipse' version '0.15' 
}

dependencies {
    annotationProcessor 'rockpalm.it:ic2-annotation-processor:1.2.1-SNAPSHOT'
}

执行gradle eclipse以设置工厂路径并在Eclipse中刷新项目。