Java : 주석 프로세서와 다른 프로젝트간에 통신하는 방법은 무엇입니까?
-
06-07-2019 - |
문제
나는 나만이있다 주석 프로세서 (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
그것에 대한 방법) 및 출력을 어느 쪽이든 작성하십시오. 수업 또는 원천 위치 (이전은 아마도 선호하지만, 당신이하고있는 일에 따라 다릅니다). 둘 다 필요한 경우 명령 줄 스위치를 통해 우선적이지만 빌드 프로세스에서 사용해야하므로 잘 정의되어 있습니다.