2009-12-10 7 views
4

상당히 복잡한 방식 (여러 개의 EJB jars, 몇 개의 전쟁, 몇 개의 sars (JBoss에만 해당))으로 귀를 만드는 빌드 프로세스가 있습니다.이 작업을 연결하는 ant 프로세스 함께 다소 복잡하다.폭발 한 귀를 배치하기위한 전략

ANT에서 EJB 생성의 생성 논리를 다시 여전히 응용 프로그램 서버 나 QA 및 생산을위한 귀에서 폭발 배포 할 수 없습니다 할 수있는 최선의 전략은 무엇.

JBoss에 관심이 있지만 질문은 폭발 된 귀 배포를 지원하는 모든 응용 프로그램 서버와 관련이 있으며 ANT에 대한 자세한 내용은 cr의 논리를 다시 작성한 두 가지 목표를 피하는 방법입니다. zip 파일을 먹고 vs 디렉토리에 복사하기.

+13

고통스러운 소리 : – cletus

+7

와우. 좋은 점은 이러한 질문에 대한 상황을 파악하는 데 도움이되는 태그가 있다는 것입니다. 그 제목은 훌륭합니다! – Goyuix

+1

pop quiz : 귀에서 포장 된 클래스 및 속성을 확인하기위한 스크립트는 무엇이라고할까요? '귀 수술':) – pmu

답변

5

내가 가장 잘 작동하는 것은 파일 시스템에서 압축 형식으로 ZIP/EAR/WAR/JAR 내용을 작성한 다음 마지막 단계 인 zip/ear/war/jar를 작성하는 것입니다. 파일로.

이렇게하면 일반적으로 훨씬 단순한 zip 파일 항목이 아닌 파일 만 알고있는 후 처리 단계를 가질 수 있습니다. 분해 된 배치와 분해 된 배치에서 변경된 파일을 선택하는 서버로 작업하는 경우 rsync를 사용하여 서버 배치에서 실제로 변경된 파일 만 갱신하면됩니다.

그런 다음 하나의 대상에 건물이 있고 다른 대상에 건물이있어 둘 다 쉽게 수행 할 수 있습니다. 이 솔루션을 사용하여 매니페스트를 처리하는 방법에 관해서


Alexander Pogrebnyak의 대답.

+0

ANT jar/war/ear 작업에는 매니페스트에 대한 특별한 처리가 필요합니다. 어떻게 그걸 처리하니? – Yishai

+0

수동으로 Manifest.MF 파일을 만들고 jar/war/ear을 수행 할 때 Ant에 해당 파일을 사용하도록 지시합니다. –

+0

그건 그렇고, 그때였다. 우리는 이후 Maven으로 마이그레이션했습니다. –

3

.ear 파일은 .zip 파일입니다. 분해 된 버전을 배포하려면 내용을 * .ear 폴더에 압축을 해제하십시오.

+0

나는 그것을 깨닫습니다. 나는 관련된 시간을 줄이려고 노력하고있다. 내 생각에 귀가 빌드 사이에 머물러 있다면 너무 나쁘지는 않지만 압축을 풀기 위해 지퍼를 추가하는 전체 여행을 피하는 것이 좋습니다. – Yishai

+0

종속 대상에서 빌드를 생성 한 다음 또는 두 개의 다른 대상을 사용하여 빌드를 생성 할 수 있습니다. 이렇게하면 논리를 트리를 한 위치에 만들고 로직을 해당 프로세스 외부로 압축 또는 복사 할 수 있습니다. –

+0

프로덕션 서버가 로컬에서 테스트중인 것과 동일한 트리 구조를 가지고 있는지 확인하기 위해 귀를 압축 해제하는 것에 글 머리 기호를 사용하는 것이 좋습니다. IMHO, 품질 보증은 생산과 마찬가지로 정확하게 전개되어야합니다. file.ear 대 폴더 문제로 인해 프로덕션에서 버그가 발생하거나 작동이 중단 될 때 자신을 차버릴 것입니다.귀. –

4

이것은 매니페스트에 대한 귀하의 의견에 대한 회신입니다.

매니페스트 생성을 제어하려면 <manifest> 작업 (here is the link)을 사용해야합니다.

다음은 매니페스트를 제공 할 내 빌드 파일에서 발췌 한 것입니다.

<copy toDir="${stage.dir}" flatten="true"> 
    <fileset dir="${resources.src.dir}"> 
    <include name="META-INF/MANIFEST.MF"/> 
    </fileset> 
</copy> 

<manifest 
    file="${stage.dir}/MANIFEST.MF" 
    mode="update" 
> 
    <attribute name="Built-By" value="${builder.name}" /> 
</manifest> 

<jar destfile="${project.jar.file}" 
    basedir="${classes.dir}" 
    manifest="${stage.dir}/MANIFEST.MF" 
    duplicate="fail" 
    whenmanifestonly="fail"  
/> 

에주의 속성 mode 작업 <manifest>합니다. 항상 update으로 설정하고 싶다면작업이 항상 실행되고 매니페스트는 항상 최신 상태가 아닙니다.

+0

쿨, 고마워! 매우 흥미로운. – Yishai