Java : 주석 프로세서와 다른 프로젝트간에 통신하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1627669

문제

나는 나만이있다 주석 프로세서 (MyProcessor라고 부르자) 그리고 프로젝트 (myProject라고 부르자) 통과하여 프로세서를 사용합니다 -processor 에게 javac.

이제 약간의 출력을 생성하고 MyProject에서 사용할 수 있도록 MyProcessor가 필요합니다.

다음 옵션 (및 문제)이 있습니다.

  • MyProcessor가 속성에 의해 지정된 경로에 파일을 쓰도록하십시오. user.dir.
    문제: MyProcessor의 관점에서 user.dir MyProject의 길이 아니라 항상 내 집입니다.

  • MyProject의 현재 디렉토리를 MyProcessor를 사용하여 전달하십시오 javac'에스 -A 옵션.
    문제: 추악한 하드 코딩 된 경로입니다. /some/path/to/MyProject/.

  • MyProcessor가 일부 소스 파일을 생성하고 다음과 같이 컴파일됩니다. javac MyProject와 함께 MyProject 가이 컴파일 된 클래스를 참조하고 데이터를 검색 할 수 있습니다.
    문제: 쉬운 (?) 작업에는 너무 복잡합니다.

  • 다른 옵션은 무엇입니까?

누군가가 어떻게 진행하는지 제안 할 수 있습니까?

도움이 되었습니까?

해결책

Processor.init() 메소드 (구현 한)가 호출됩니다 처리 환경 매개 변수로서 getFiler() 방법 a Filer 사례.

당신은 그것을 사용해야합니다 createResource() 방법의 방법 Filer (생성되는 출력이 클래스 나 소스가 아니라고 가정하면 적절한 사용 create 그것에 대한 방법) 및 출력을 어느 쪽이든 작성하십시오. 수업 또는 원천 위치 (이전은 아마도 선호하지만, 당신이하고있는 일에 따라 다릅니다). 둘 다 필요한 경우 명령 줄 스위치를 통해 우선적이지만 빌드 프로세스에서 사용해야하므로 잘 정의되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top