2012-01-06 2 views
3

명령 줄 (IDE 없음)에서 jee6 코드를 컴파일하도록 시스템을 설정했습니다. 최근에 javax.enterprise.context.RequestedScope를 사용하는 코드를 컴파일하려고했습니다. 코드는 명령 프롬프트에서 정상적으로 컴파일되었지만 Maven을 사용하여 응용 프로그램을 빌드하려고하면 javax.enterprise.context 패키지를 찾을 수없는 오류가 계속 발생합니다.Java가 명령 줄에서 컴파일되지만 Maven에서 컴파일되지 않습니다.

무엇을 제공합니까? Maven이 내가 사용하고있는 것과 동일한 javac을 사용하고 있다고 생각했습니다. javac에서 패키지를 찾을 수 있지만 Maven에서 찾을 수없는 이유는 무엇입니까? Java 패키지에 대한 종속성을 추가해야합니까?

또는 빌드 할 때 Maven에 현재 클래스 파일을 사용하도록 알려주는 방법이 있습니까? 아니면 빌드 할 때 Maven을 컴파일해야합니까?

감사합니다. 메이븐 종속성으로 자바 EE 6 단지를 추가

답변

3

봅니다 :

<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"> 
    . . . 
    <dependencies> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 
</project> 

이것은 당신의 컴파일시 클래스 패스에 자바 EE 클래스를 추가합니다.

+0

감사합니다. Shelly. 그 트릭을하는 것처럼 보였다. – user1054606

0

코드를 Maven으로 컴파일하려면 필요한 구성 요소를 찾을 위치를 지정해야합니다.

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-endorsed-api</artifactId> 
    <version>6.0</version> 
    <scope>provided</scope> 
</dependency> 

참고 <scope> 요소를 : 당신이 당신의 의존성이를 추가 할 필요가 같은

보인다. 런타임에 응용 프로그램 컨테이너에 의해 제공된 이 될 것이므로이 종속성을 이슈와 번들하지 않도록 Maven에 알립니다.

명령 줄에서 컴파일하는 이유 때문입니다. 명령 줄 -cp 옵션 또는 글로벌 CLASSPATH 변수에 필요한 jar 파일이있을 수 있습니다.

Maven은 의도적으로 글로벌 CLASSPATH에 신경 쓰지 않습니다.

관련 문제