이런 경우가 있습니다. 이클립스에서 컴파일을 하면 문제가 되는 패키지 없이 컴파일이 잘되는데, 유독 maven 에서 클린을 해서 날려버린다음 빌드를 하려하면 특정 패키지를 못 찾는 경우가 있습니다.
도대체 감을 못잡으시겠죠?

원인은 간단합니다. 오타와 이클립스 빌드 구조의 한계죠.
예를 들어 pom.xml 에서 depdency 하는 것이 다음과 같다면 발생합니다.

<dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-activation_1.1_spec</artifactId>
            <version>1.0.2</version>
            <scope>provide</scope>
</dependency>

provide 가 아니라 provided 죠?

<dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-activation_1.1_spec</artifactId>
            <version>1.0.2</version>
            <scope>provided</scope>
 </dependency>


가 맞습니다. 그럼 이클립스에서는 왜 잘 되나구요?
이클립스는 provide 나 compile 이나, test 나 똑같이 빌드패스에 등록을 하여 사용합니다. 즉, 구분을 하지 않습니다. 따라서 이클립스 프로젝트의 빌드에서는 scope 를 처리 안한다는거죠. 그래서 빌드가 됩니다

반면! 메이븐이 컴파일 할 경우에는 scope 를 따지니깐, 오타가 있으면 무시해버리죠. 즉, 저 패키지를 가져오지 않아 빌드가 실패가 됩니다.

이넘 때문에 오랜 시간 고생하고 있었네요. 매번 이클립스 빌드 후 인스톨...ㅡㅡ;;

+ Recent posts