자동 생성된 코드를 넣기에 좋은 곳은 어디입니까?
-
09-09-2019 - |
문제
우리는 대부분 Axis2 스텁, 스켈레톤 등으로 구성된 자동 생성 클래스를 많이 가지고 있습니다.일부 복잡한 wsdls의 경우 Axis2는 TON의 java-beans, 스텁 등을 생성합니다.그리고 자동 생성을 사용하는 다른 경우도 있을 것이라고 확신합니다.
지금은 이를 코드 기반의 다른 일급 멤버로 취급하며 동일한 패키지에 저장됩니다.
그러나 리팩토링, 정리 등을 수행할 때 이러한 자동 생성 클래스에서 나오는 경고를 제거하기가 어려워집니다.예를 들어, Java1.5 제네릭을 사용하기 위해 코드를 정리하려는 경우 이러한 문제가 있는 클래스 중 얼마나 많은 클래스가 우리 클래스인지 자동 생성되는지 알 수 있는 좋은 방법이 없습니다.
자동 생성된 부분을 다른 패키지로 분리해야 합니까?이러한 아티팩트를 저장소에 어떻게 저장합니까?
편집하다:아래의 꽤 많은 답변에서 '빌드 프로세스 중 생성'을 볼 수 있습니다.그렇게 하면 이점이 있지만 저장소 체크인에서 벗어날 수 있는 방법은 잘 모르겠습니다.
내 코드에는 이러한 클래스 중 일부에 대한 컴파일 시간 종속성이 있으며 개발 중 빌드는 Eclipse에서 'ctrl-s'입니다.우리는 ant-script를 사용하여 컴파일을 생성하고, 테스트를 실행하고, 결과물을 생성합니다.
해결책
동일한 패키지를 보관할 수 있지만 다른 소스 폴더 (생성 SRC와 같은)를 사용합니다. 이것이 우리가하는 일입니다. 나는 실제로 소스 코드 저장소에서 생성 된 코드를 저장한다는 전체 아이디어에 대해 울타리에 있습니다. 우리는 프로젝트의 다른 개발자들에게 편리함으로 수행하지만 일반적으로 빌드 프로세스의 일부로 소스 코드를 재생하는 것이 합리적입니다. 이 생성 된 코드가 변경되지 않을 경우 별도의 프로젝트를 사용하고 항아리를 생성하는 것이 더 실용적 일 수 있습니다.
다른 팁
모범 사례 요약 :
- 반복 가능하게하십시오
- 빌드 프로세스의 일부로 생성 된 코드를 만듭니다.
- 생성 된 코드를 소스 컨트롤로 확인하지 마십시오. (소스를 확인하십시오. 예 : WSDL)
- 생성 된 코드를 관리 코드와 별도로 유지하십시오
- 생성 된 출력에는 다른 소스 폴더를 사용하십시오.
- 이 생성 된 코드가 종속성이되도록 별도의 .jar를 제공하십시오.
- 다른 IDE 프로젝트 (또는 Maven 모듈) 사용을 고려하십시오.
이 파일을 자신의 프로젝트에 넣었습니다. 이런 식으로 빌드 파일, 필요한 모든 패치 등을 한 곳에 추가하고 생성 된 코드에 대한 모든 경고를 끄십시오.
소스 제어 시스템에 체크인하는 경우 ~하지 않다.빌드 단계에서 다시 생성되도록 합니다.WSDL에서 생성된 경우 결과 코드가 아닌 WSDL을 체크인하세요.
해당 빌드 단계에서 생성된 코드에 대해 완전히 별도의 .jar을 생성한 다음 소스 파일을 삭제하여 유지관리자가 자동 생성된 소스를 직접 편집하려고 시도할 가능성을 최대한 낮추는 것이 좋습니다.
이렇게 하면 리팩토링 활동에서 자동 생성된 코드가 조작할 소스가 아닌 타사 라이브러리처럼 표시됩니다.
생성 된 각각의 각 세트에 대해 생성을 수행하는 새 프로젝트를 만듭니다. 그런 다음 아티팩트를 JAR 및 소스 ZIP 파일에 묶은 다음 앱에서 참조하십시오. 일을 멋지고 별도로 유지하고 생성 된 유물이 IDE에 의해 변화가 아니라는 사실을 강조합니다.
Maven과 Axistools-Maven-Plugin을 사용하면 생성 된 소스는 'Target'디렉토리의 다른 소스 폴더의 장소입니다. 이 대상 디렉토리는 Maven이 모든 파일과 물건을 생성하는 곳이므로 청소할 수 있습니다.
생성 된 파일이 IDE 내의 다른 소스 폴더에도 나타나기 때문에 이것은 매우 회복됩니다.