하나의 Java 프로젝트에서 여러 클래스와 패키지를 추출하여 다른 프로젝트 (배치 가능한 jar가 있음)에 배치하려고합니다. 그다지 어렵지는 않지만, 물론 큰 리팩토링을 사용하면 결과가 있습니다. 즉, 원본 프로젝트에는 추출하려는 클래스의 하위 클래스 인 많은 클래스가 있습니다. 이러한 종류의 리팩터링에 접근하는 가장 좋은 방법은 무엇입니까?클래스를 별도의 프로젝트로 리팩터링하십시오.
1
A
답변
0
그래서 기본적으로 이것은 내가 무슨 짓을 : 모든 빌드 할 때까지
이 새로운 프로젝트에 새 패키지에 새 프로젝트를 이전 프로젝트에서 해당 클래스를 통해
복사본 만들기 재구성 별도로 프로젝트와 항아리
추가 항아리 A를에 구축
테스트 SA 의존성
이
수동으로 정말 찾던 새로운 패키지
에 기존 패키지의 모든 수입을 변경 원래 프로젝트에서 클래스를 삭제하는 자동화 할 수있는 방법이었다 또는 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 개의 프로젝트를 빌드 한 다음 전체를 묶어줍니다.
관련 문제
- 1. 도우미 클래스를 별도의 어셈블리에 저장합니까?
- 2. 별도의 클래스를 만드는 대신
- 3. 두 가지 방법을 하나로 리팩터링하십시오.
- 4. C 메소드/클래스를 C# 프로젝트로 가져 오기
- 5. 클래스를 iPhone 프로젝트로 가져 오려면 어떻게해야합니까?
- 6. Python이 별도의 파일로 클래스를 관리합니다.
- 7. 별도의 프로젝트에서 nhibernate 클래스를 구조화하는 방법
- 8. 단위 테스트 및 통합 테스트를 별도의 프로젝트로 분리해야합니까?
- 9. silverlight 4 단일 솔루션 또는 별도의 프로젝트로 프로젝트?
- 10. 더 나은 코드 : LINQ 클래스를 확장하거나 별도의 도우미 클래스를 만드시겠습니까?
- 11. MVC를 사용할 때 별도의 뷰 클래스를 만들어야합니까?
- 12. Java 클래스를 별도의 파일로 다시 보냅니다.
- 13. 각 클래스를 별도의 파일에 저장하십시오. python
- 14. NHibernate에 별도의 어셈블리에서 서브 클래스를 가입
- 15. Visual Basic 클래스를 별도의 파일에 저장하고 있습니까?
- 16. 이 작업을 위해 별도의 클래스를 만들어야합니까?
- 17. TPL 화재 및 별도의 클래스를 사용하여 잊어
- 18. Eclipse를 사용하여 클래스를 기존 Java 프로젝트로 가져 오는 방법
- 19. 사용자 정의 클래스를 Android 프로젝트로 가져올 때 생성자가 표시되지 않습니다.
- 20. 다른 프로젝트의 클래스를 XCOde 4 프로젝트로 복사하면 오류가 발생합니다.
- 21. 프로젝트로 저장
- 22. 프로젝트를 별도의 모델로 이동
- 23. Ruby/Rails 코드 블록 사이에 다른 사람이 있다면 리팩터링하십시오.
- 24. 페이지의 일반적인 문자열 값을 일부 EL 상수로 리팩터링하십시오.
- 25. CLI 프로젝트로 네이티브 C++ 클래스 가져 오기
- 26. JAR 프로젝트로 실행되는 Spring JMS
- 27. 네임 스페이스 내에서 별도의 헤더에 정의 된 클래스를 사용하는 방법
- 28. django.contrib.auth.models 가져 오기 사용자를 사용할 때 models.py에서 별도의 클래스를 만들어야합니까?
- 29. 다른 aspx 페이지에서 사용되는 별도의 컨트롤 클래스를 만들어야합니까?
- 30. 안드로이드 : 별도의 클래스 파일에서 AsyncTask 내부 클래스를 호출하십시오.
어떤 IDE를 사용하고 있습니까? –
IDE가 중요한 이유는 무엇입니까? – LuGo
@LuGo IDE는 리팩터링 결정을 내리는 데 도움이되지 않지만 클래스, 패키지 등에 대한 모든 참조를 수정하고 유지하므로 사용자는 프로세스를보다 쉽게 만들 수 있습니다. –