2010-07-06 14 views
3

Joel Test의 항목 2는 "한 번에 빌드 할 수 있습니까?"이지만이 작업을 수행하는 가장 좋은 방법은 무엇입니까? headless build을 수행하기 위해 IDE의 명령 행 인터페이스를 사용하는 것에 대한 장단점은 IDE와 완전히 독립적 인 빌드 스크립트 (예 : Java 프로젝트의 경우 Ant 또는 Maven 사용)를 유지하는 것과는 다릅니다.명령 줄 빌드 모범 사례

나는 Maven을 실험하고 있기 때문에 m2eclipse 플러그인을 사용할 때조차도 Eclipse의 Java Builder를 끄고 전체 빌드 프로세스를 Maven에 위임 할 수 없다는 사실을 알고 놀랐다. 프로젝트. 프로젝트를 Maven으로 마이그레이션하고 싶다면 2 개의 동등하지만 다른 빌드 프로세스를 유지해야 할 것입니다. 예를 들어 명령 줄 빌드는 JDO 클래스를 향상시키는 데 DataNucleus Maven 플러그인을 사용하고 IDE 빌드는 Eclipse 용 DataNuclues 플러그인을 사용합니다. 명령 행 빌드는 Tomcat Maven 플러그인을 사용하고 IDE는 Eclipse의 웹 도구 플랫폼을 사용합니다. 이 이중화는 불행한 것처럼 보입니다.

NetBeans가이 빌드를 위해 Ant를 사용한다는 것을 모았습니다.이 문제는이 문제를 해결하는 것처럼 들립니다. 하지만 불행히도 NetBeans 나 Ant를 사용하지 않습니다! 추가하려면

편집 : 나는 내가 사용하고 메이븐 플러그인의 일부를 호출 구체적인 목표와 이클립스에서 메이븐 빌더를 설정할 수 있다는 것을 발견 (예를 들어 내 경우에는 목표는 "datanucleus : 프로세스 레 향상 자원 "은 JDO 향상, 자원 복사 및 native2ascii 변환을 처리합니다. 이것은 Eclipse에 자바 컴파일을 남긴다. 그러나 여전히 Maven과 어느 정도 통합을 이룬다.

+0

매우 조심스럽게 "단계"를 정의함으로써 ... –

답변

1

이클립스 빌더는 중급 및 반복 빌드를 제공하지만 실제로 "조엘 테스트"는 소스에서 준비 단계로 무언가를 한 단계에 배치 할 수 있다는 것입니다. Maven을 사용한다면 Eclipse 내에서 Maven을 명령 행 스크립트로 호출하는 것만 큼 여러 가지 방법이있다.

mvn package 

전체 빌드 설정을 빠르게 실행하는 데 가장 자주 사용하는 것입니다. 원하는 경우 POM을 통해 Maven을 확장하고 몇 가지 추가 메커니즘을 주입 할 수 있습니다. 조금 더 복잡해지면 다중 모듈 POM 및 Maven 설정을 사용하여 기능 테스트를 통합하여 나머지 코드와 함께 실행하는 것이 가장 효과적입니다.

기본적으로 이클립스는 빌더와 함께 빌더를 사용하여 "할 일"을하고 최종 제품을 사용할 준비가되면 연속 통합 서버를 통해 명령 행에서 호출합니다 (허드슨은 얻고 설치하는 쉬운 쉬운 것 - 역시 역시 : http://hudson-ci.org/). 아마도 Maven을 사용할 경우 Archiva 나 Nexus 인스턴스를 결과 라이브러리를위한 DSL로 설정해야 할 것입니다. hudson이 정기적 인 체크 인 빌드를 위해 "mvn deploy"를 호출하게하거나, 릴리스를자를 준비가되었을 때 "mvn release : prepare & & mvn release : perform"을 호출하게 할 수 있습니다 (허드슨의 개별 빌드가 이에 가장 적합합니다)

+0

좋아, 기본적으로 두 가지 다른 프로세스입니다. 나는 그걸로 살아야 할지도 모른다고 생각했지만 먼저 다른 개발자의 의견을 듣고 싶었습니다. (이클립스가 곧바로 "할 일"을한다면 JDO 향상, native2ascii 변환 및 WAR 배치와 같은 많은 기능을 수동으로 구성해야한다는 점에서 문제가되지 않는다. POM에서 이미 선언 된 것은 방금 생각했습니다.) –

+0

조금 더 똑똑해졌고, 결국 일부 작업을 메이븐에 위임 할 수 있다는 것을 발견했습니다 (위의 편집 참조). –

0

IDE에서 헤드리스 빌드를 수행 할 수 있습니다. 이클립스에서 임의의 쉘 명령을 "외부 도구"로 실행할 수 있습니다. 이것은 IDEA와 넷빈에서도 마찬가지입니다. 최소한 이것은 빌드 구성을 변경할 때마다 실행해야하는 헤드리스 빌드의 편리한 테스트입니다.

또한 빌드를 최소 요구 사항으로 한 단계 씩 추가해야한다고 덧붙이고 싶습니다. 또한 쉽게 설정하고 디버그하기 쉬워야합니다. 새로운 개발자 환경을 설정하는 데 2 ​​시간 이상 걸리면 원 스톱 프로세스가 최적 상태가되지 않을 수 있습니다. 이것은 분기 별 또는 매년 팀 구성원을 추가하거나 교체 할 경우 문제가되지 않는다는 경고와 함께 있습니다.

+0

나는 OP가 여기에서 의미하는 것은 * 다른 방법이 아닌 * Eclipse Build headless * (명령 줄에서)를 실행하고 있다고 생각합니다. 그리고 그가 그렇게 할 수 있기 때문에, Maven을 병렬 유지 보수 등으로 빌드해야하는 이유는 무엇입니까 (짧은 버전)? –