하나의 소스 파일의 종속성을 기반으로 Java Eclipse 프로젝트의 하위 집합 만들기

가끔 고객에게 제공되는 기능을 포함한 라이브러리 Eclipse프로젝트/작업 공간이 있습니다. 우리는 모두 연구자이기 때문에 아주 비공식적으로 열립니다. 문서와 함께 JAR과 Word파일을 만들어서 그들에게 보냅니다.나는 일을 단순화하기 위해서 실제 필요한 것만 포함 JAR파일을 보내는 것을 좋아합니다. X, Y, Z및 W클래스가 필요한 경우에는 X, Y, Z및 W와 그 반이 의존하는 모든 클래스를 포함한 JAR파일을 송신합니다.지금 나는 절망적인 수동 방식으로 이 작업을 실시하고 있습니다( 새로운 프로젝트를 만들어 X, Y, Z및 W위로 드러그 하고 컴파일러 오류를 수정하기 위해서 필요한 모든 것을 드래그 합니다). Eclipse에서 자동화하는 올바른 방법은 무엇입니까?편집:분명히 하기 위해서 관련 Eclipse프로젝트에는 고객이 실제로 필요한 것보다 훨씬 많은 클래스가 포함되어 있습니다.편집:또 반사는 포함되지 않습니다. 컴파일러는 무슨 일이 일어나고 있는지 알고 있다고 확신할 수 있다. 나는 코드를 작성한 사람이다, 전염병처럼 반사를 피합니다. 리플렉션을 사용한 유일한 장소는 Collections.toArray()을 모방함으로써 이 경우 문제를 일으키는 유일한 클래스는 사용자가 제공한 클래스입니다.Ant를 사용하고 이런 것을 자동화할 수 있습니다.

때때로 고객에게 제공되는 기능을 포함하는 라이브러리 이클립스 프로젝트/작업 공간이 있습니다. 우리는 모두 연구자이기 때문에 매우 비공식적으로 이루어집니다. 문서와 함께 JAR과 Word 파일을 만들어 그들에게 보냅니다.나는 일을 단순화하기 위해 실제로 필요한 것만 포함하는 JAR 파일을 보내는 것을 선호합니다. X, Y, Z 및 W 클래스가 필요한 경우 X, Y, Z 및 W와 해당 클래스가 의존하는 모든 클래스를 포함하는 JAR 파일을 전송합니다.지금 저는 절망적인 수동 방식으로 이 작업을 수행하고 있습니다(새로운 프로젝트를 만들고 X, Y, Z 및 W 위로 드래그하여 컴파일러 오류를 수정하는 데 필요한 모든 것을 드래그합니다). 이클립스에서 자동화하는 올바른 방법은 무엇입니까?편집: 명확하게 하기 위해 관련된 이클립스 프로젝트에는 고객이 실제로 필요로 하는 것보다 더 많은 클래스가 포함되어 있습니다.편집: 또한 반사는 포함되지 않습니다. 컴파일러는 무슨 일이 일어나고 있는지 알고 있다고 확신할 수 있다. 나는 코드를 작성한 사람이며 전염병처럼 반사를 피합니다. 리플렉션을 사용한 유일한 장소는 Collections.toArray()를 모방하는 것이며, 이 경우 문제를 일으키는 유일한 클래스는 사용자가 제공한 클래스입니다.Ant를 사용하여 이러한 것들을 자동화할 수 있습니다.내보내기 명령을 사용하면 생성된 JAR에 포함할 파일을 선택할 수 있습니다.내보내기 명령을 사용하면 생성된 JAR에 포함할 파일을 선택할 수 있습니다.현재 컴파일러가 만족할 만한 클래스 파일을 복사하고 있습니다. 하지만 실행 중인 애플리케이션을 만족시키기 위해 충분한 클래스 파일을 복사하고 있다고 확신하십니까? 일부 애플리케이션은 런타임에 리플렉션을 통해 클래스를 로드합니다.文字列 className = “org.my .company.”Foo”; クラス<?> fooClass = Class.forName(className);オブジェクト foo = fooClass.newInstance();이 예에서 컴파일러는 org.my .company.Foo 클래스를 복사하지 않아도 불평하지 않습니다. 하지만 실행 중인 애플리케이션은 클래스를 찾을 수 없을 때 가장 분명 불평할 것입니다.두 상황을 모두 수용하려면 실행 중인 애플리케이션에서 로드되는 모든 클래스를 기록하는 사용자 정의 ClassLoader를 생성할 수 있습니다.이 예에서 컴파일러는 org.my .company.Foo 클래스를 복사하지 않아도 불평하지 않습니다. 하지만 실행 중인 애플리케이션은 클래스를 찾을 수 없을 때 가장 분명 불평할 것입니다.두 상황을 모두 수용하려면 실행 중인 애플리케이션에서 로드되는 모든 클래스를 기록하는 사용자 정의 ClassLoader를 생성할 수 있습니다.그 후, 다음과 같이 애플리케이션을 실행할 수 있습니다.자바-Djava.시스템 .class.loader = RecordingClassLoader-Dloaded.classes.file = loaded_classes.txtner의 응용 프로그램 loaded_classes.txt 파일은 다음과 같습니다.자바.lang.시스템 Java.nio.charset.Charset java.lang.String……너의 어플리케이션 java.패키지. 애플리케이션을 실행한 후 작은 프로그램이 이 파일에서 언급된 클래스를 자동으로 복사할 수 있습니다.그 후, 다음과 같이 애플리케이션을 실행할 수 있습니다.자바-Djava.시스템 .class.loader = RecordingClassLoader-Dloaded.classes.file = loaded_classes.txtner의 응용 프로그램 loaded_classes.txt 파일은 다음과 같습니다.자바.lang.시스템 Java.nio.charset.Charset java.lang.String……너의 어플리케이션 java.패키지. 애플리케이션을 실행한 후 작은 프로그램이 이 파일에서 언급된 클래스를 자동으로 복사할 수 있습니다.Bye cycle, Eclipse플러그 인이 도움이 되었지만 Sourceforge에서 삭제되었습니다. 철저히 자동화된 프로세스를 얻어내는 것이 아니라 종속성을 결정하는 것입니다. 나는 이를 오랫동안 사용했기에 Ganymede/Galileo에서 작동시킬 수 있을지 확실하지 않습니다.업데이트 반 의존성 분석기 도구는 실행하려는 작업을 정확히 수행하기에 플러그 인을 생성하기 위해서 사용할 수 있는 플러그 인 확장 API와 함께 제공되므로 보다 편리합니다.업데이트#2Ant의 사용법이 마음일 경우, ClassFileSet타입을 사용하여 클래스와 종속성 목록을 제공합니다. 이는 복제 작업 내에서 참조되며 필요한 클래스 파일을 복사할 수 있습니다. 이는 소스 파일을 복사하지 않기로 주의하세요.내부적으로 이 방법은 BCEL라이브러리에 의존하기 때문에 소스 카피를 실행하려는 경우. class파일 종속성을 검사하고 소스를 다른 디렉토리에 복사하는 코드를 작성할 수 있습니다.Bye cycle, Eclipse 플러그인이 도움이 되지만 Sourceforge에서 삭제되었습니다. 철저하게 자동화된 프로세스를 얻는 것이 아니라 종속성을 결정하는 것입니다. 나는 이것을 오랫동안 사용해왔기 때문에 Ganymede/Galileo에서 작동시킬 수 있을지 확실하지 않습니다.업데이트 클래스 의존성 분석기 도구는 실행하고자 하는 작업을 정확하게 수행하기 위해 플러그인을 생성하는 데 사용할 수 있는 플러그인 확장 API와 함께 제공되므로 더욱 편리합니다.업데이트 #2Ant 사용법이 궁금하다면 Class FileSet 타입을 사용하여 클래스와 종속성 목록을 얻을 수 있습니다. 이것은 복사 작업 내에서 참조되며 필요한 클래스 파일을 복사할 수 있습니다. 이것은 소스 파일을 복사하지 않는 것에 주의해 주세요.내부적으로 이 방법은 BCEL 라이브러리에 의존하기 때문에 소스 복사본을 실행하고자 하는 경우 .class 파일의 종속성을 검사하고 소스를 다른 디렉토리로 복사하는 코드를 만들 수 있습니다.이러한 리팩터링을 지원하기 위해 이클립스 개선 요청을 제출하였습니다. 그동안 저는 분리와 종속성 분석에 도움이 되는 몇 가지 유망한 도구를 찾았습니다. eDepend는 다음을 포함하는 종속성 뷰어 플러그인입니다.요소 의존성을 표시하는 클래스/패키지 의존도, 라이브러리/다른 프로젝트 및 의존성 사이클과의 관계. 그러한 종속성을 야기한 클래스 검색을 나열할 수도 있습니다.Java용 STAN 구조분석 엔와이어 클래스 종속성 분석 기종 속성 찾기 질문 : 1이러한 리팩터링을 지원하기 위해 이클립스 개선 요청을 제출하였습니다. 그동안 저는 분리와 종속성 분석에 도움이 되는 몇 가지 유망한 도구를 찾았습니다. eDepend는 다음을 포함하는 종속성 뷰어 플러그인입니다.요소 의존성을 표시하는 클래스/패키지 의존도, 라이브러리/다른 프로젝트 및 의존성 사이클과의 관계. 그러한 종속성을 야기한 클래스 검색을 나열할 수도 있습니다.Java용 STAN 구조분석 엔와이어 클래스 종속성 분석 기종 속성 찾기 질문 : 1https://www.youtube.com/watch?v=vsPJ5LUSogU

error: Content is protected !!