2012-01-13 5 views
2

Java EE 응용 프로그램에서 Maven 모듈을 어떻게 구성합니까? 현재 우리가 할 것은 부모 POM에서 다음 메이븐 모듈이 있습니다 :Maven 구조와 Java EE 응용 프로그램

  • EJB
  • EJB-API ejb 모듈은 EJB 클래스가 포함

  • 코어, core 모듈에는 엔티티를 포함한 다른 모든 유틸리티 클래스가 들어 있습니다. ejb-api은 로컬 및 원격 인터페이스가 포함 된 경량 모듈로서 필요에 따라 별도의 응용 프로그램에 포함 할 수 있습니다. ear은 EAR 패키지를 만들고이를 응용 프로그램 서버에 배포하는 데 사용됩니다.

    응용 프로그램을 어떻게 구성합니까? 나는 유틸리티 클래스와 엔티티 클래스를 어디에 저장하는지에 특히 관심이있다.

  • +1

    기본 netbeans 디렉토리 구조'myapp-ejb, myapp-war etc'가 좋았지 만 netbeans 자체에별로 신경 쓰지 않아서 정말 개성이 강했고 개미와 함께 개미를 사용하여 개인적으로 Maven과 손 잡는 것이 더 빠름을 발견했습니다. 나는 유틸리티 클래스 등을 재사용 할 수 있도록 유지하려고 노력했다. 그리고 나의 겸손한 jee 프로젝트로부터 분리되었다. 그리고 그것들은 당신이 모든 라이브러리와 같이 포함되어있는 별도의 '라이브러리 타입'프로젝트에있다. 나는 또한 패키지 이름 (또는 이것이 무엇이든간에)을 패키지화한다. 예를 들어 회사 구조체 모델에 대한 엔티티를'foo.company'에 패키징하는 경우이다. –

    +0

    JEE 애플 리케이션은 종종 웹 애플 리케이션이다. 'myapp-war' 프로젝트는 webapp 특정 코드를 포함하고 있습니다. 당신에게 적용되지 않을 수도 있습니다. 우리는 ejb와 ejb-api를 그들 자신의 모듈로 분리하지 않는다; 하지만 그것은 합리적인 아이디어이며 우리는 아마해야합니다. –

    +1

    @Dario : "1 module = 1 deliverable"원칙에 따라 프로젝트를 구성해야합니다. 산출물은 WAR, EAR, JAR, ...입니다. –

    답변

    3

    메이븐은 미리 정의 된 구조를 레이아웃 archetypes의 개념이를 따라야합니다. 사전 정의 된 아키 타입을 org.codehaus.mojo.archetypes에서 추천합니다. 데스크탑 애플리케이션에서 서버 측 애플리케이션 (J2EE 1.3에서 Java EE 6)까지의 아키타 입을 가지고 있습니다.

    1

    IDE는 Websphere RAD와 비슷하지만 일반적으로 Oracle JDeveloper는 각각 다른 프로젝트를 생성합니다.

    maven을 사용하면 하나의 모듈 만 사용하고 maven-ejb-plugin을 사용하여 공통 코드를 추출하고 인터페이스를 클라이언트 jar로 가져올 수 있습니다. 유일한 방법은 프로젝트 하나를 사용하고 일관성있는 접근 방식을

    HTH

    <plugin> 
        <artifactId>maven-ejb-plugin</artifactId> 
        <configuration> 
        <ejbVersion>3.0</ejbVersion> 
        <generateClient>true</generateClient> 
        <clientIncludes> 
        <clientInclude>com/foo/goo/**/model/**</clientInclude> 
        <clientInclude>com/foo/goo/**/service/**</clientInclude> 
        </clientIncludes> 
    </configuration> 
    </plugin> 
    
    관련 문제