2014-06-05 3 views
0

필자는 실행 가능한 jar에서 필수적이지 않은 모든 로직을 뽑았으며,이 로직을 용이하게하기 위해 플러그인을 만들었습니다. 항아리로의 수출과 관련된 개념적인 문제에 직면하고 있습니다. 내가 기본 서비스와 두 개의 플러그인을 가지고 있다고 가정 해 보겠습니다.자바 플러그인 - jar 컴파일/내보내기 방법

package/main.java  
package/plugins/foo.java  
package/plugins/bar.java  

이 설정을 내 보낸 병으로 미러링하고 싶습니다. main.jar이어야하며 foo.jarbar.jar이 있어야합니다. 나는 현재 같은 자바 프로젝트 내에서 세 가지 패키지를 모두 가지고있다. 수동으로 내보내려면 프로젝트에서 개별 프로젝트로 플러그인을 가져와야합니까? ANT 컴파일을 살펴보고이 프로젝트를 하나의 프로젝트 내에 두어야합니까?

나는 또한 어둠 속에서 이들이 어떻게 서로에 대한 참조를 유지할 것인지에 관해서도 조금 있습니다. 예를 들어, foo와 bar는 모두 어떤 식 으로든 main을 확장합니다. 나는이 과정에 대해서도 약간의 통찰력을 원한다. 이클립스 IDE

+0

내 지식 에서처럼 "플러그인"이 아닌 것 같다. 사실 foo & bar는 둘 다있다. 주요 메소드이며 둘 다 main.java에서 확장됩니다. Eclipse에서 하나의 프로젝트는 하나의 jar 파일로만 내보냄니다. 3 개의 병, 3 개의 프로젝트가 필요한 경우 :) 3 개의 프로젝트 인 경우 컴파일 할 수 있도록 main.jar를 foo 프로젝트 및 바 프로젝트에 넣어야합니다. 어쨌든, 나는 그 일에 어떤 가치도 보이지 않습니다. 하나의 jar 파일 만 사용하여 항상 main 메소드를 실행할 수 있습니다. –

+0

플러그인을 만드는 것과 같은 목적은 내가 바를 종료하고 변경하고 사용자 상호 작용없이 다시 켤 수 있어야하기 때문입니다. 필자는 플러그인에 대해 조금 읽었으며 정규 클래스 로더를 사용하기보다는 위에서 설명한 작업에서 JARClassLoader를 사용하기 시작했습니다. 문제는 각 메인 클래스를 현재 개별적으로 내보내야한다는 것입니다. 그것은 필자가 묘사 한 다른 플러그인 설명처럼 보인다. 플러그인은 필요한 모든 메소드를 사용하기 위해 플러그인을 구현한다. 나는 그들이 어떻게 수출하는지 궁금해서, 나는 그들이 주를 사용하지 않는다고 생각 하느냐? – user1870954

+0

알겠습니다. 플러그인으로, 나는 foo & bar 자신의 프로젝트가 필요하다고 생각합니다. 그들의 프로젝트는 main.jar를 종속물로 가져와야합니다. 그러나 foo & bar를 내보낼 때 실행 가능한 jar로 내보낼 필요가 없습니다. 대신, 일반 jar로 내보내고 해당 플러그인이 작동하는 데 필요한 클래스 및 리소스 만 유지하십시오. 플러그인 개발은 일반적으로 메인 앱 개발과는 독립적이어야합니다. 한 프로젝트에서 이러한 클래스를 유지하려는 경우, 한 프로젝트에서 여러 개의 jar 파일을 내보낼 수 있습니다. main.jar를 runnable로, foo.jar을 보통 jar로 사용하여 모든 불필요한 부분을 제거했습니다. –

답변

0

나는 그것이 올바른 추측하고있는 경우

, 당신은 main.jar의에서 foo.jar에와 bar.java이 필요합니다. 그렇다면 foo와 bar는 서로 독립적입니다. 플러그인을 별도의 플러그인으로 유지하고 main.jar의 종속성으로이 플러그인을 나열해야합니다. 나는 ANT와 함께 일한 적이 없지만 이것이 의존성이 Maven에서와 같이 관리되는 방법이라고 생각한다.

관련 문제