1

이클립스 플러그인으로 어노테이션 프로세서를 빌드하려고합니다. 이클립스 용 플러그인을 작성한 것은 이번이 처음이므로 정확한 용어를 사용하고 있는지 확실하지 않으며 미안하지만 분명하지 않습니다.이클립스 플러그인 개발, 자바 프로젝트에서 플러그인 클래스 공개

내 목표는 주석이 달린 Java 클래스에서 코드를 생성하는 플러그인을 사용하는 것입니다. 모든 플러그인이 플러그인에 포함되어 있기 때문에 사용자 프로젝트에 플러그인을 설치하지 않아도됩니다. 추가 종속성, 즉 사용자가 플러그인을 설치하면 일부 클래스를 작성하고 플러그인에 패키지 된 일부 주석으로 주석을 추가하고 생성 된 코드를 가져옵니다.

내가하려는 일을 할 수 있습니까? 필자는 자체 라이브러리를 추가하는 다른 플러그인 (예 : Xtent)을 보았습니다.

10x

답변

1

가능합니다. 클래스 경로 컨테이너가 빌드에있을 때 동적으로 플러그인 jar를 분석하고 주석 클래스를 프로젝트 빌드 경로에 추가하는 사용자 지정 IClasspathContainer를 구현해야합니다. 빌드 경로 UI에서 IClasspathContainer는 "Library"라는 이름으로 이동합니다. JRE, User Library 등과 같은 것들은 IClasspathContainer API를 통해 구현됩니다.

예를 보려면 org.eclipse.jdt.core 및 org.eclipse.jdt.ui 플러그인의 소스를 가져옵니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 지금 제가 알아 내려고 시도한 것은 입니다. 1. 내 플러그인에 라이브러리를 어떻게 포장합니까? 2. 내 플러그인에서이 라이브러리를 어떻게 참조해야합니까? 'JavaCore.newLibraryEntry (new Path ("??? ???) ...' – Gilad

+0

주석 클래스 jar를 배포하는 데는 여러 가지 방법이 있습니다. 가장 좋은 방법은 다음과 같은 코드를 사용하는 것입니다. jar 파일을 독립 실행 형 OSGi 번들로 묶어 도구 플러그인 내부에서 배포 할 수 있습니다. 그런 다음 번들 둘 다를 사용자의 기능에서 참조 할 수 있습니다. 런타임시 번들 경로를 찾으려면 FileLocator.getBundleFile (Bundle) 번들 객체를 얻으려면 Platform.getBundle (id)을 사용하십시오. –