2012-10-17 2 views
1

하나의 Java 프로젝트에서 여러 클래스와 패키지를 추출하여 다른 프로젝트 (배치 가능한 jar가 있음)에 배치하려고합니다. 그다지 어렵지는 않지만, 물론 큰 리팩토링을 사용하면 결과가 있습니다. 즉, 원본 프로젝트에는 추출하려는 클래스의 하위 클래스 인 많은 클래스가 있습니다. 이러한 종류의 리팩터링에 접근하는 가장 좋은 방법은 무엇입니까?클래스를 별도의 프로젝트로 리팩터링하십시오.

+0

어떤 IDE를 사용하고 있습니까? –

+0

IDE가 중요한 이유는 무엇입니까? – LuGo

+0

@LuGo IDE는 리팩터링 결정을 내리는 데 도움이되지 않지만 클래스, 패키지 등에 대한 모든 참조를 수정하고 유지하므로 사용자는 프로세스를보다 쉽게 ​​만들 수 있습니다. –

답변

0

그래서 기본적으로 이것은 내가 무슨 짓을 : 모든 빌드 할 때까지

  1. 이 새로운 프로젝트에 새 패키지에 새 프로젝트를 이전 프로젝트에서 해당 클래스를 통해

  2. 복사본 만들기 재구성 별도로 프로젝트와 항아리

  3. 추가 항아리 A를에 구축

  4. 테스트 SA 의존성

  5. 수동으로 정말 찾던 새로운 패키지

에 기존 패키지의 모든 수입을 변경 원래 프로젝트에서 클래스를 삭제하는 자동화 할 수있는 방법이었다 또는 6 단계를 간소화하여 아무 것도 깨지 않았는지 확인하지만 대량 발견/교체를 넘어서는 존재인지 확신 할 수 없습니다.

0

별도의 프로젝트를 만들 수 있으며 주 프로젝트는 이러한 모든 프로젝트에 대한 종속성을 갖습니다. 따라서 IDE에서 소스 코드를 쉽게 탐색 할 수 있습니다.

응용 프로그램을 빌드 할 때 각 종속성은 jar에 내장 될 수 있으며 기본 응용 프로그램은 해당 클래스 경로의 모든 종속성 병과 함께 번들로 제공됩니다.

예를 들어 common-plugins 프로젝트에 저장된 공통 클래스, 유틸리티 등을 사용하는 플러그인과 플러그인을 사용하는 웹 앱을 예로 들어 보겠습니다.

project/webapp: having dependency on plugin1, plugin2 and common-plugin 
project/plugin1: having dependency on common-plugins 
project/plugin2: having dependency on common-plugins 
project/common-plugins: having no dependencies 
프로젝트를 빌드 할 때, 당신은 내가 예를 들어 일식 걸릴 것입니다, 당신의 웹 응용 프로그램

project/webapp.war/WEB-INF/lib/plugin1.jar 
project/webapp.war/WEB-INF/lib/plugin2.jar 
project/webapp.war/WEB-INF/lib/common-plugins.jar 

당신의 IDE에서이 방법과 함께 번들로 항아리에 플러그인과 공통 플러그인을 만들 수

, 위에서 설명한대로 4 개의 프로젝트가 종속성을 갖는 작업 공간을 갖게됩니다. maven, ant, ivy 또는 원하는 것을 사용하여 빌드 할 때 webapp 프로젝트가 의존하는 3 개의 프로젝트를 빌드 한 다음 전체를 묶어줍니다.

관련 문제