2011-03-11 5 views
0

프로덕션 환경에서 시스템을 패치해야하지만 이미 CVS에서 주 트렁크를 변경했습니다. 변경 사항이 많기 때문에 클래스를 하나만 포함하기 때문에 코드를 이전 버전으로 되돌리고 싶지는 않습니다.기존 병에 컴파일 클래스를 주입하는 방법은 무엇입니까?

이 작업을 수행 할 수 있습니까?

  1. 응용 프로그램을 중지하십시오.
  2. 편집 한 * .class를 안전하게 기존 병에 바꿉니다.
  3. 응용 프로그램을 다시 시작하십시오. 항아리 다른 사람이 서명하지 않는 한

많은 감사

+1

클래스 경로 시작 부분에 패치 디렉토리를 추가하고 해당 디렉토리에 클래스를 추가 할 수 있습니까? 즉, 현재 릴리스를 변경할 필요가 없으며 변경 사항을 되돌리려면 파일을 삭제하면됩니다. –

답변

4

, 그것은 수행 할 수 있습니다. Jar 파일은 결국 zip 파일 일 뿐이며, 압축을 풀고 파일을 바꾼 다음 다시 압축합니다. 항아리에 서명하고 열쇠를 가지고 있다면 새로운 항아리에 다시 서명해야합니다. (jar 명령을 사용하는 것이 좋습니다.)

그러나 이렇게하는 것은 매우 나쁜 습관입니다. 당신이 지금 저장하는 작업의 양은이 배포 방법이 습관이되면 백 배의 손실을 입을 것입니다. 실제 위기 (예 : 애플리케이션이 10 분마다 실행되거나 충돌하지 않는 경우)가 아니면 절대 절대로이를 수행해서는 안됩니다.

CVS를 사용하는 경우에는 릴리스에 항상 태그를 지정해야하지만 아직 릴리스하지 않은 경우에도 릴리스 날짜 당시의 트렁크를 체크 아웃하고 거기에서 분기를 만들고 변경 사항을 지점을 열고 응용 프로그램을 다시 빌드하십시오.

약 10 분 (컴파일 시간)이 소요되며 안전하고 적절한 방법입니다. 테스트 환경에서 패치 된 응용 프로그램을 실행하고 작동하는지 테스트 한 후 나중에 배포 할 수 있습니다.

기존 응용 프로그램에서 미리 컴파일 된 클래스 파일을 삭제하면 수일 후에 명확하지 않은 코드가 중단 될 수 있습니다. 응용 프로그램을 다시 컴파일하고 다시 테스트하면이 위험이 사라지고 코드 변경과 관련된 위험은 훨씬 줄어 듭니다.

0

네, 잘 할 수 있습니다. 새 클래스가 잘 컴파일되었는지 확인한 다음 항아리를 업데이트하십시오. jar -u이 당신이 원하는 것입니다.

관련 문제