2013-08-15 2 views
4

그래서 스프링 메이븐 프로젝트 (Dao Project)를 만들었습니다. 모든 코드가 정확한 위치에 있으며 모든 단위 테스트가 실행되며 mvn 새로 설치를 수행 할 수 있습니다. 대상 디렉토리에 빌드 jar가 있고 그 안에있는 모든 것이 잘 보입니다. 또한 로컬 .m2/저장소를 확인할 때 방금 만든 최신 항아리가 있음을 확인할 수 있습니다. 내 UI에 대한 새 봄 메이븐 웹 프로젝트를 생성하고, 지금Java Maven Project가 다른 프로젝트의 디렉토리가 아닌 다른 프로젝트로 나타납니다

<modelVersion>4.0.0</modelVersion> 
<groupId>com.tom.myproject</groupId> 
<artifactId>myproject-dao</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 
<name>My Project DAO</name> 

,이 pom.xml 파일이처럼 시작 : 여기

은 pom.xml 파일의 작은 세그먼트

<modelVersion>4.0.0</modelVersion> 
<version>0.0.1-SNAPSHOT</version> 
<groupId>com.tom.myproject</groupId> 
<artifactId>myproject-ws</artifactId> 
<name>My Web Project</name> 
<packaging>war</packaging> 

또한이 pom.xml 파일에서, 내가 가진 첫 번째 종속성 중 하나입니다 : 나는 일식에서 볼 수

<!-- My DAO ProjectDependencies --> 
    <dependency> 
     <groupId>com.tom.myproject</groupId> 
     <artifactId>myproject-dao</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

갔지 그 n이 dao jar에서 클래스에 액세스하려고 시도합니다. 정상적으로 작동하는 것 같습니다. 여기서 코드를 컴파일하면 모든 것이 잘 동작합니다. 그리고이 전쟁을 구축하기 위해 "mvn clean install"을 할 때 대상 디렉토리를 볼 수 있으며 모든 필요한 클래스와 jar 파일이 들어옵니다. WEB-INF에있는 최대 절전 모드, 로깅 및 스프링 클래스가 있습니다./lib 디렉토리.

이제는 질문이 오는 부분입니다 ... myproject-dao가 WEB-INF/lib 아래에 WEB-INF/lib/myproject-dao-0.0.1-SNAPSHOT.jar로 나타나는 이유는 무엇입니까? 항아리가 아닌 디렉토리로 나타 납니까?

확실히 다른 항아리를 가져 오면 그냥 .jar 파일이고 디렉토리가 아닙니다.

Eclipse 프로젝트에서 maven 종속성을 볼 때 다른 모든 jar의 아이콘이 파일로 표시됩니다. 내 myproject-dao.jar의 아이콘은 폴더/디렉토리 아이콘을 사용하므로 명확하게 "myproject-dao.jar"라는 디렉토리를 만들고 jar 파일에 압축 내용이있는 파일이 생성되지 않습니다.

war 파일을 빌드하고 war를 배포하면 myproject-dao.jar 디렉토리에있는 클래스를 찾을 수 없다는 메시지가 표시됩니다. WEB-INF/lib 디렉토리에서 폴더 "myproject-dao.jar"를 삭제하고 수동으로 FILE "myproject-dao.jar"를 복사해야합니다. 그러면 아이콘이 실제로 파일임을 알 수 있습니다.

이것은 아마도 간단한 수정이므로 도움이된다면 좋을 것입니다.

답변 : 나는 받는다는 - 조립 플러그인을 사용하지 않은

. 그러나 나는 그 문제가 무엇인지 알아 냈다.

내 DAO 프로젝트와 WEB 프로젝트가 모두 동일한 작업 공간에 있고 DAO 프로젝트가 열렸습니다. 그 결과 Eclipse에 표시된 maven 종속성은 jar 아이콘이 아닌 폴더 아이콘이었습니다. DAO 프로젝트를 닫고 WEB 프로젝트 pom.xml 파일의 maven 의존성을 되돌아 보았을 때 ... 이제는 폴더가 아닌 jar로 아이콘이 표시됩니다.

그래서 maven을 사용하여 dao.jar 파일을 빌드해야하며, 성공하면 완료됩니다. 그런 다음 Eclipse 내에서 프로젝트를 닫아야합니다. 내 웹 프로젝트 pom.xml 파일에서이 아이콘이 jar 파일로 표시되고 빌드하면 jar 파일이 표시됩니다.

이전 프로젝트에서 몇 가지 작업을하고 있다면 이점이 있다고 상상해보십시오. 실제로 전쟁이 진행되는 동안 jar 파일에있는 내용을 볼 기회가 있습니다.

필자의 경우 dao.jar이 작동하고 있으므로 빌드하고 프로젝트를 닫은 다음 필요한 곳 ​​어디에서나 해당 병을 사용할 수 있다는 것을 알고 있습니다.

+1

나는 약간 혼란 스럽다. 당신은 무엇을 의미 하는가? "jar가 아닌 디렉토리로 나타납니다." war에서 WEB-INF/lib/myproject-dao-0.0.1-SNAPSHOT.jar을 추출하면 디렉토리 또는 jar 파일입니까? – drgn

+0

기본적으로 의존성 (예 : JAR)은 WAR에'WEB-INF/lib'로 압축되어 있습니다. 무엇을 기대 했습니까, 아니면 귀찮게합니까? – LaurentG

+0

아무도 문제를 설명 할 수 있습니까 ?? – saurav

답변

6

maven-assembly-plugin을 사용하지 않았습니다. 그러나 나는 그 문제가 무엇인지 알아 냈다.

내 DAO 프로젝트와 WEB 프로젝트가 모두 동일한 작업 공간에 있고 DAO 프로젝트가 열렸습니다. 그 결과 Eclipse에 표시된 maven 종속성은 jar 아이콘이 아닌 폴더 아이콘이었습니다. DAO 프로젝트를 닫고 WEB 프로젝트 pom.xml 파일의 maven 의존성을 되돌아 보았을 때 ... 이제는 폴더가 아닌 jar로 아이콘이 표시됩니다.

그래서 maven을 사용하여 dao.jar 파일을 빌드해야하며, 성공하면 완료됩니다. 그런 다음 Eclipse 내에서 프로젝트를 닫아야합니다. 내 웹 프로젝트 pom.xml 파일에서이 아이콘이 jar 파일로 표시되고 빌드하면 jar 파일이 표시됩니다.

이전 프로젝트에서 몇 가지 작업을하고 있다면 이점이 있다고 상상해보십시오. 실제로 전쟁이 진행되는 동안 jar 파일에있는 내용을 볼 기회가 있습니다.

필자의 경우 dao.jar이 작동하고 있으므로 빌드하고 프로젝트를 닫은 다음 필요한 곳 ​​어디에서나 해당 병을 사용할 수 있다는 것을 알고 있습니다.

도움 주셔서 감사합니다.