Maven으로 Java EE 프로젝트 생성


13

약 1 년 동안 Eclipse로 Java EE 웹 애플리케이션을 개발해 왔습니다. 내 고용주는 Maven을 사용하지 않지만 더 많이 읽을수록 Maven + Hudson이 우리에게 큰 도움이 될 것이라고 확신합니다. 그러나 먼저 여가 시간에 이러한 기술에 익숙해 져야 개념 증명을 만들 수 있습니다.

지금은 여전히 ​​Maven 초보자입니다. Maven으로 Java EE 웹앱을 작성하기위한 모범 사례가 있습니까? 예를 들어, 기본 아키 타입으로 프로젝트를 생성 한 다음 서블릿 컨테이너, EJB, EclipseLink 등에 대한 POM에 의존성을 두어 필요한 모든 JAR을 추가 할 수 있습니다. 그것을하는 방법. 이 주제와 관련하여 제공 할 수있는 모든 지침에 감사드립니다.

답변:


10

나중에까지 원형을 귀찮게하지 마십시오

Maven에 대해 알아야 할 모든 정보를 보려면 해당 웹 사이트일부 책을 읽으십시오 . 그러나 그것은 달성하려는 것에 약간의 과잉입니다.

시작하려면 다음과 같이 웹 응용 프로그램의 표준 Maven 구조에 따라 웹 응용 프로그램을 레이아웃하십시오. (이를 위해 Maven 아키 타입이 필요하지 않습니다. 표준 폴더 일뿐이므로 2 분 안에 만들 수 있습니다).

  • src/main/java -프로덕션 Java 코드를 포함합니다.
  • src/main/resources -프로덕션 클래스 경로 리소스를 포함합니다 (예 : Spring 컨텍스트)
  • src/main/webapp -(WEB-INF / web.xml을 포함하지만 lib 폴더는 포함하지 않음)
  • src/test/java -테스트 자바 코드를 포함
  • src/test/resources -테스트 리소스를 포함합니다 (예 : 웹 서비스 테스트를위한 XML 피드 등)

기본 플러그인

다음 단계는 여러 플러그인을 선택하는 것입니다. 일반적으로 용의자는 정리, 컴파일 및 리소스를 지원하는 것입니다 (Maven의 일부로 제공되지만 구성 할 수는 있음). 그런 다음 확실한 단위 테스터와 WAR 플러그인이 있습니다. 아주 기본적인 웹 응용 프로그램을 만들기에 충분합니다.

고급 플러그인

다음 단계는 코드를 철저히 살펴보고 다양한 잠재적 문제를보고하는 Findbugs 및 PMD 플러그인을 소개하는 것입니다. 상호 참조 소스 코드, TODO 및 REFACTOR 태그 추적을위한 taglist 등을위한 JXR이 필요할 수 있습니다. 무엇보다...

... 웹 애플리케이션에 Jetty 플러그인 사용

Jetty 플러그인을 사용하면 IDE 내에서 WAR 파일을 실행하여 쉽게 디버깅 할 수 있습니다. 빠르고 작으며 작업을 빠르게 처리합니다. Maven 빌드의 일부로 Jetty를 사용하면 복잡한 서버 패널을 구성한 IDE가 없어도 모든 시스템에서 프로젝트를 테스트 할 수 있습니다. 또한 다른 WAR 파일에 대한 종속성을 선언 할 수 있으므로 "mvn clean jetty : run"명령 하나만으로 여러 웹 응용 프로그램으로 구성된 완전한 작업 환경을 생성 할 수 있습니다. 이것은 어디서나 작동하며 테스트 JNDI 구성을 제공하여 스프링 주입 데이터 소스가 모두 외부 적으로 구성되도록 할 수 있습니다. 이 Jetty 접근법을 표준 데모 HTML 페이지 (src/test/resources/demo.html) 현지 환경을 사용하려는 개발자 시간을 절약 할 수 있습니다. 하나의 명령으로 완료되었습니다. 단순한.

IDE 구성

Maven을 사용하면 모든 큰 소년들이 그것을 지원하기 때문에 쉽습니다 : Eclipse, Netbeans 및 물론 개인적으로 좋아하는 Intellij. IDE를 pom.xml로 지정하면 나열된 모든 종속성을 제거합니다. 에 대해 더 이상 고민하지 않아도됩니다 WEB-INF/lib. Eclipse에서는 일반적으로 File | 가져 오기 ... | 메이븐 프로젝트 | pom.xml.

Hudson과 통합

먼저 Hudson (웹 앱일뿐)을 설치 한 다음 버전 관리 시스템을 대상으로하여 적절한 버전을 확인하십시오. 마지막 단계는 Maven을 사용하여 빌드를 수행하도록 구성하는 것입니다. 분명히 Maven은 빌드 머신에 설치해야합니다 (개발 머신과 다르다고 가정).

허드슨은 스냅 샷 만 빌드합니다

Hudson이 스냅 샷 빌드를 수행하도록하고 릴리스 빌드는 수동 프로세스로 남겨 두십시오. 이 접근 방식을 사용하면 개발자는 스냅 샷 개정판 (예 : 1.0.0-SNAPSHOT)으로 코드를 공유 할 수 있으며 빌드를 전달할 수있는 경우에만 팀 저장소에 공유됩니다. 일반적으로 Hudson은 "mvn clean deploy"를 실행하지만 "site"목표를 포함하면 모든 빌드에 대해 작은 프로젝트 웹 사이트를 생성하므로 프로세스의 일부가 될 수도 있습니다. 팀의 개발자는 Maven 종속성 관리 프로세스를 통해 업데이트 된 스냅 샷 빌드를 프로젝트에 자동으로 포함시킵니다.

Hudson은 모든 방식의 메트릭을 지원할 수있는 다양한 플러그인을 제공합니다. 개인적으로 가장 좋아하는 것은 시간이 지남에 따라 프로젝트 당 통과 테스트 수를 추적하는 것입니다. 단위 테스트 횟수와 범위가 계속 증가하고 있다는 것을 경영진에게 보여주는 것이 좋습니다.

일반 설정 안내

리포지토리를 최소한 다음 구조로 분할하십시오.

  • 팀 출시-모든 출시 된 프로덕션 아티팩트는 여기로 이동
  • 팀 스냅 샷-모든 스냅 샷 개발 아티팩트
  • 타사 릴리스-지원되는 모든 타사 라이브러리 (예 : Spring, Hibernate 등)

개발자 사용자 계정은 팀 리포지토리 (스냅 숏 또는 릴리스)에 쓸 수 없어야합니다. 이를 통해 개발자는 Hudson이 급한 경우 신속하게 표준이 될 경우 Hudson을 우회 할 수 있습니다.

모든 타사의 소스, javadoc 및 SHA 서명을 항상 다운로드하십시오. Jarvana 는 클래스를 찾기 어려운 모든 사람들을위한 훌륭한 저장소 탐색기입니다.

계속 증가하는 저장소를보다 효과적으로 제어 할 수 있도록 Nexus 또는 Artifactory와 같은 저장소 관리자를 설치하십시오.


2
Sonar도 꽤 훌륭하고 maven / Hudson과 잘 어울립니다
Kevin

1
물론. 현재 팀에서 Maven 프로젝트를 진행 중이라면 로컬 Findbugs / PMD가 킬러 문제를 빨리 포착 할 것으로 기대합니다 .Jenkins가 Nexus 또는 Artifactory에 아티팩트를 배포 한 후 Sonar 작업을 수행합니다. 이를 통해 아티팩트의 위치를 ​​쉽게 파악할 수 있으며 프로젝트 생태계 전체에서 해당 아티팩트에 대한 영향 분석 ( "사용 된 위치")을 제공합니다. git, JIRA 및 Fisheye와 함께 사용하면 멋진 개발 프로세스를 사용할 수 있습니다.
게리 로우

1
게리, PDF 링크는 만료
user1787812

1

Maven은 많은 아키타 입을 제공합니다

mvn archetype:generate

사용 가능한 목록을 인쇄합니다.

J2EE 아키 타입이있는 일반 Java 아키 타입의 주요 차이점은 jsp 및 이미지 용 디렉토리 가 생성된다는 것입니다. 새 J2EE 프로젝트를 시작하는 경우 처음부터 이들 중 하나를 사용하는 것이 좋습니다.

프로젝트가 성장함에 따라 더 많은 종속성을 추가 할 수 있습니다. 개인적으로 나는 최소한의 의존성 컬렉션 (예 : J2EE 기본 아키 타입)부터 시작하여 점차 필요한 것을 추가하는 것을 선호합니다.


0

기본 아키 타입에서 시작하여 모든 비트를 추가하여이 작업을 수행했으며 그 방법이 그다지 좋지 않다고 확신합니다. 그러나 나는 그것이 다른 방법으로도 어색하다는 것을 알았습니다. 이미“비밀에 정통한”것이 아니라면 좋은 아키타 입을 선택하는 것은 어렵습니다. 그것은 내 취향에 대한 마법사의 지식 (현명한 발견 가능한 기술 정보가 아닌)과 너무 비슷합니다.


좋은 질문이라고 생각합니다. 더 나은 답변을 원합니다.
Donal Fellows

대단히 감사합니다.
Michael

0

Maven은 Archetypes 라는 템플릿에서 프로젝트를 생성하는 방법을 제공합니다 . 명령 mvn archetype:generate을 사용하여 대화식으로 하나를 선택 합니다. 직접 지정할 수도 있습니다.

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

한 줄에 모두 있습니다.


0

지난 3 개월 동안 Maven과 Hudson을 사용하고 있습니다. 모든 단위 테스트를 실행하고 테스트 보고서를 생성하여 코드베이스의 상태를 정기적으로 점검하는 데 도움이됩니다. 당신은 이것을 시도 할 수 있습니다.
Spring Roo를 사용해 볼 수도 있습니다. Spring 기반 J2EE 프로젝트를 작성하기위한 RAD 도구입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.