2014-09-03 6 views
5

나는 AbstractProcessor을 확장하는 간단한 자바 주석 프로세서에서 작업 해왔다.Gradle에서 Java Annotation Processor를 어떻게 사용합니까?

나는 성공적 문제는 안드로이드 Studio를 사용하여 간단한 안녕하세요 안드로이드 응용 프로그램에이 통합되어 javac -Processor MyProcessor mySource.java

사용하여이 테스트 할 수있었습니다.

새로운 Android Project를 만든 다음 별도의 모듈을 추가하여 모든 주석 처리기 코드 (MyProcessor 클래스와 함께 사용하는 사용자 정의 주석)를 배치했습니다.

그런 다음이 새로운 모듈을 HelloWorld android 프로젝트의 종속물로 추가했습니다.

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':MyProcessorModule') 
} 

어떻게 다음 HelloWorld 애플리케이션의 모든 소스 파일을 기반으로 코드를 생성하기 위해 프로세서를 사용합니까?

+0

수동으로 컴파일 할 때 사용하는 Gradle 용 compilerArgs가 누락되었습니다. – Peter

+0

마지막으로 올바른 방법을 찾아 냈습니까? –

답변

2

작동시키기위한 플러그인이 있습니다. 그것은 메이븐의 로컬 jar 파일에 대해 확실하지 않은 모듈과 완벽하게 작동,하지만 당신은 확실히 그것을 시도 줄 : 그것으로 https://bitbucket.org/hvisser/android-apt

여기 내 build.gradle : 플러그인 페이지를 여기

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     ... add this classpath to your buildscript dependencies 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 
    } 
} 

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' << apply the plugin after the android plugin 

dependencies { 
    // in dependencies you call it 
    apt 'com.company.myAnnotation:plugin:1.0-SNAPSHOT' 
    compile 'com.company.myAnnotation:api:1.0-SNAPSHOT' 

이어야합니다.

+4

또한 로컬 항아리와도 ​​작동합니다 :'apt files ('libs/locallib.jar')' – WonderCsabo

0

무슨 일을 여기에 완벽하게 맞아 내가 라이브러리로 사용하는 내 프로젝트 중 하나의 예입니다 : 당신은 또한 무엇을해야 물론

dependencies { 
    compile project(':boundservice') 
} 

가 추가 한 모듈을 정의하는 것입니다 라이브러리로

android-library 및 적용 대상이 아닙니다.

이 당신이 그것을이 New Module 사용 할 경우 자동으로 수행한다 ->Android Library 옵션을하지만 어쩌면이 프로젝트로, 내가 이해 ... 안드로이드와는 아무 상관이없는 당신은 단지 Java Library 옵션을 선택해야합니다.

build.gradle 파일을 동기화하면 (약간 깨끗한 빌드가 도움이 될 수도 있음) Android 프로젝트에서 클래스 파일을 사용할 수 있어야합니다.

1

android-apt 플러그인을 사용하십시오. 더 나아가서 이미 로컬 주석 프로세서 개발을 위해 android-apt 플러그인을 사용하고있는 sample project을 포크하십시오.

sample project here에 대해 읽어보십시오.