2010-05-18 4 views
1

의존성 해결을 돕기 위해 m2eclipse 플러그인을 사용하여 처음부터 이클립스 프로젝트를 만들려고합니다.Eclipse + m2eclipse 플러그인 + EAR 모듈 종속성

프로젝트는 다음과 같은 모듈로 구성

테스트 귀 시험 EJB 시험 전쟁

귀 참조 모두 다른 프로젝트, 치어 파일을 준비하고 각 프로젝트에서 일하고있다.

아직도 나는 1 개 상황을 대신 내 프로젝트를 빌드 받는다는, 나는 이클립스에서 귀를 내보내고 작업 프로젝트를 할 수 있도록하려면, 그래서 그것을 뜨거운 배포 할 수

서버.

하지만 하나의 문제가 있습니다 ... ejb가 외부 jar (jbpm)를 사용하며 종속성이 pom에 올바르게 지정되어 있으며 "Maven Dependencies"사용자 lib 정의에 나타나며 컴파일 오류가 없습니다.

하지만 성공적으로 EAR을 내보내려면 jar (jbpm)를 ejb 매니페스트 파일에 추가해야합니다. 프로젝트 속성 "Java EE Module Dependencies"로 이동 "Maven Dependencies"항목 만 있고이를 선택하면 매니페스트 파일에 정보가 추가되지 않습니다.

그런 다음 EAR을 내보내면 EAR 루트에 종속성 jar 파일이 표시되지만 포함 된 EJB를 열면 매니페스트에 클래스 경로 항목이 전혀 없음이 표시됩니다.

EAR을 배포하면 EJB의 ClassNotFoundException에 대한 정보가 종속성 병 내부의 클래스에서 실패합니다.

이것을 우회하려면 EAR 모듈 (프로젝트 -> 등록 정보 -> Java EE 모듈 종속성)에 jar를 포함시킨 다음 EJB에 추가 할 수 있으며 이에 따라 매니페스트 파일이 업데이트됩니다.

그러나이 프로젝트에는 많은 수의 항아리가 있으며, EAR에 모든 수작업을 포함시키고 각 프로젝트에서 모두 선택하고 싶지는 않습니다.

나는 그 항목이 .settings/org.eclipse.wst.common.component 파일에 있다는 것을 알고 있지만, Maven 플러그인은 EAR 프로젝트에서 자동으로 업데이트하지 않아야합니까? 적어도 자바 EE 모듈 종속성에, 그래서 난 그냥 당신이 모든 3를 패키지 할 제대로 이해하는 경우 (... EJB, 전쟁,) 각 하위 프로젝트에

감사

답변

0

를 항아리를 확인할 수 있습니다 결과로 생성되는 EAR 파일에서 EJB가 사용하는 타사 라이브러리. EAR 프로젝트의 패키징 유형이 ear이고 EJB 모듈에 대한 종속성이 ejb 유형으로 올바르게 지정되면 타사 라이브러리가 자동으로 결과 EAR 파일에 포함되어야합니다. EAR에서 사용자 정의 lib 디렉토리를 지정할 수도 있습니다.

예 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>yourGroup</groupId> 
    <artifactId>test-ear</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <!-- We want the resulting artifact to be an .ear file --> 
    <packaging>ear</packaging> 

    <dependencies> 
     <!-- Internal dependencies --> 
     <dependency> 
      <groupId>yourGrup</groupId> 
      <artifactId>test-ejb</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
      <!-- We have an ejb dependency here - take care of it! --> 
      <type>ejb</type> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <configuration> 
        <version>5</version> 
        <!-- put all 3rd party libs into the lib directory --> 
        <defaultLibBundleDir>lib</defaultLibBundleDir> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

그래서이 IMO m2e 아무것도 없어야합니다. Eclipse에서 프로젝트 구성을 업데이트해야 할 수도 있습니다.

관련 문제