2011-01-10 15 views
85

이것은 내 친구의 작업 프로젝트로되어 있습니다. 그는 나 앞에서 프로젝트를 보여 주었고 프로젝트를 복사하여 기존의 maven 프로젝트로 가져왔다. (나는 m2eclipse 플러그인을 사용하고있다.)Maven 종속성을 해결할 수 없습니다. 이슈를 해결할 수 없습니다.

그런 다음이 오류가 발생합니다. 이 오류는 maven으로 무언가를 만들려고 할 때마다 재현 될 수 있습니다.

mvn dependency를 수행 중입니다 : tree, dependency : list 또는 일반적인 빌드 패키지는 동일한 오류를 발생시킵니다.

'패키지'이클립스에서 빌드를 실행에서 오류는 다음과 같습니다

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Jackpot Portal Webapp 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet:jar:2.5.0 is missing, no dependency information available 
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0 is missing, no dependency information available 
[WARNING] The POM for javax.transaction:com.springsource.javax.transaction:jar:1.1.0 is missing, no dependency information available 
[WARNING] The POM for org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6 is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.963s 
[INFO] Finished at: Tue Jan 11 01:55:41 WIT 2011 
[INFO] Final Memory: 2M/56M 
[INFO] ------------------------------------------------------------------------ 

[ERROR] Failed to execute goal on project jackpot: Could not resolve dependencies 
for project com.jeteo:jackpot:war:1.0-SNAPSHOT: The following artifacts could 
not be resolved: javax.servlet:com.springsource.javax.servlet:jar:2.5.0, 
javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0, 
javax.transaction:com.springsource.javax.transaction:jar:1.1.0, 
org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6: Failure to find 
javax.servlet:com.springsource.javax.servlet:jar:2.5.0 in 
http://repository.springsource.com/maven/bundles/release was cached in the 
local repository, resolution will not be reattempted until the update 
interval of com.springsource.repository.bundles.release has elapsed or 
updates are forced -> [Help 1] 

[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 

그리고 여기에 pom.xml 파일의 내용이다 : 나는 최신 버전을 다운로드 시도했습니다

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>com.jeteo</groupId> 
<artifactId>jackpot</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>Jackpot Portal Webapp</name> 
<url>http://www.jeteo.com</url> 
<properties> 
    <java-version>1.6</java-version> 
    <org.springframework-version>3.0.3.RELEASE</org.springframework-version> 
    <org.hibernate-version>3.6.0.Final</org.hibernate-version> 
    <org.aspectj-version>1.6.9</org.aspectj-version> 
    <org.slf4j-version>1.5.10</org.slf4j-version> 
</properties> 
<dependencies> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.8.1</version> 
    <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>net.sf.jt400</groupId> 
    <artifactId>jt400</artifactId> 
    <version>6.6</version> 
    <scope>compile</scope> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>${org.hibernate-version}</version> 
    <scope>compile</scope> 
    </dependency> 
    <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${org.hibernate-version}</version> 
      <scope>compile</scope> 
     </dependency> 

    <!-- AspectJ --> 
    <dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjrt</artifactId> 
    <version>${org.aspectj-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjtools</artifactId> 
    <version>${org.aspectj-version}</version> 
    </dependency> 

    <dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>com.springsource.javax.servlet</artifactId> 
    <version>2.5.0</version> 
    <scope>provided</scope> 
    </dependency> 
    <dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>com.springsource.javax.servlet.jsp.jstl</artifactId> 
    <version>1.2.0</version> 
    <scope>provided</scope> 
    </dependency> 
    <!-- 
    <dependency> 
    <groupId>javax.persistence</groupId> 
    <artifactId>com.springsource.javax.persistence</artifactId> 
    <version>1.0.0</version> 
    <scope>compile</scope> 
    </dependency> 
    --> 
    <dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>com.springsource.javax.transaction</artifactId> 
    <version>1.1.0</version> 
    <scope>compile</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
    </dependency> 
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>com.springsource.slf4j.log4j</artifactId> 
    <version>1.5.6</version> 
    </dependency> 
    <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.11</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 

</dependencies> 
<repositories> 
    <!-- Spring releases --> 
    <repository> 
    <id>com.springsource.repository.bundles.release</id> 
    <name>Spring Maven Repository Repository</name> 
    <url>http://repository.springsource.com/maven/bundles/release</url> 
    </repository> 
    <!-- For hibernate 3.6 support --> 
    <repository> 
    <id>jboss</id> 
    <url>https://repository.jboss.org/nexus/content/groups/public/</url> 
    </repository> 
</repositories> 
<build> 
    <finalName>jackpot</finalName> 
    <plugins> 
    <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>tomcat-maven-plugin</artifactId> 
      <version>1.1</version> 
      <configuration> 
      <url>http://localhost:8080/manager</url> 
      </configuration> 
     </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
    </plugin> 
    </plugins> 
</build> 
</project> 

maven의, 그리고 일식 헬리오스에 포함되어 있지만, 여전히 같은 문제. 쉘 명령 행 (eclipse 외부)에서 실행할 때도 동일한 오류 메시지가 발생합니다.

무엇이 누락 되었습니까?

답변

68

일부 Maven Repos가 누락 된 것처럼 보입니다. 친구의 .m2/settings.xml을 물어 보면 POM을 업데이트하여 거기에 저장소가 포함되도록 할 수 있습니다.

--edit : 몇 가지 빠른 인터넷 검색 후, 당신의 POM이 추가 시도 :

<repository> 
    <id>com.springsource.repository.bundles.release</id> 
    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name> 
    <url>http://repository.springsource.com/maven/bundles/release</url> 
</repository> 
<repository> 
    <id>com.springsource.repository.bundles.external</id> 
    <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> 
    <url>http://repository.springsource.com/maven/bundles/external</url> 
</repository> 
+5

고마워요! 내 친구는 이미 자신의 랩탑에서 작동한다고 언급했는데, 그는 이미 .m2에 캐시 된 종속성을 가지고 있기 때문에 더 이상 다운로드하지 않으려합니다. 그리고 그는 저장소 항목을 공유했습니다. 일부는 당신의 발견과 같았습니다. 지금은 이제 잘되었습니다. 시간 내 주셔서 감사합니다! 그리고 내가 아는 경우, 어떤 키워드를 사용하여 어떤 저장소를 사용하는지 알아 내고 있습니까? 나는 어제도 인터넷 검색을 시도했지만, 나는 비참하게 끝났다. haha – bertie

+6

"POM for xxx is missing"경고 메시지 때문에 저장소 문제라는 것을 알고있었습니다. 그래서 나는 "springsource maven"을 검색하고 springsource 프로젝트 FAQ와 Maven을 사용하기 위해 설정 한 항목을 생각해 냈습니다. – wmorrell

3

artifactId 다운로드하지 못한 모든 종속성이 잘못에 대한 - 그들은 com.springsource로 시작하는 몇 가지 이유. 잘라 내기/붙여 넣기에 문제가 있습니까?

다음과 같이 교체 할 수 있습니다.

 <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.5.6</version> 
     </dependency> 

당신은 또한 지정된 저장소에서 사용할 수없는 경우에 이러한 이슈를 받는다는 중앙 저장소를 추가 할 수 있습니다.

<repository> 
    <id>maven2</id> 
    <url>http://repo1.maven.org/maven2</url> 
    </repository> 
+0

나는 그것을 시험해 보았고 여전히 오류가 있습니까? 다음은 패키지 태스크를 수행 한 후 이클립스의 부분 출력입니다. 프로젝트 대박에서 목표를 실행하지 못했습니다. 프로젝트 com.jeteo의 종속성을 해결할 수 없습니다. jackpot : war : 1.0-SNAPSHOT : 다음 아티팩트를 확인할 수 없습니다. javax.servlet : servlet-api : jar : 2.5.0, javax.servlet : jstl : jar : 1.2.0, javax.transaction : jta : jar : 1.1.0 : javax.servlet 찾기 실패 : servlet-api : jar : 2.5.0 http://repository.springsource.com/maven/bundles/release가 로컬 저장소에 캐시 된 경우 업데이트 간격이 .... – bertie

+0

@ Albert Kam이 될 때까지는 다시 시도하지 않습니다.누락 된 아티팩트에 대한 maven 중앙 저장소에 대한 참조를 포함하도록 업데이트 된 답변 – Raghuram

+0

com.springsource 접두어는 아티팩트가 스프링 엔터프라이즈 저장소에서 오는 것을 의미합니다. – eis

1

비슷한 메시지가 있고 내 settings.xml에 일부 프록시 환경 설정이 있습니다. 그래서 나는 그들을 비활성화하고 모든 것이 잘 작동합니다.

0

이 문제가 발생했습니다. 제 경우에는 IntelliJ Idea가 pom.xml 파일 중 일부를 뒤범벅하여 발생했습니다 (이 작업을 즐기는 것처럼 보입니다!). 방금 원본으로 되돌려 놓고 다시 작업했습니다!

5

동일한 문제의 대안 소스로 this answer은 Maven 3과 Maven 2를이 문제의 잠재적 인 원인으로 인용합니다. 내가 말할 수있는 바로는, 이것은 Maven 3에서 변경된 local repository resolution의 변경 때문입니다. 다른 사람들이이를 검색하고이 답변에 도달하면 (예전처럼) 여기에 넣으십시오.

0

이 문제도 있었지만, NetBeans가 pom.xml 파일에 뭔가를 추가했기 때문에이 문제가 발생했습니다. 이전에 성공적으로 배포 한 이후로 두 번 확인하지 않았습니다.

3

나는 비슷한 문제가 있었는데, 나는 아래의 repos를 pom에 추가하여 그것을 고쳤다.xml :

<repository> 
     <id>org.springframework.maven.release</id> 
     <name>Spring Maven Release Repository</name> 
     <url>http://repo.springsource.org/libs-release-local</url> 
     <releases><enabled>true</enabled></releases> 
     <snapshots><enabled>false</enabled></snapshots> 
    </repository> 
    <!-- For testing against latest Spring snapshots --> 
    <repository> 
     <id>org.springframework.maven.snapshot</id> 
     <name>Spring Maven Snapshot Repository</name> 
     <url>http://repo.springsource.org/libs-snapshot-local</url> 
     <releases><enabled>false</enabled></releases> 
     <snapshots><enabled>true</enabled></snapshots> 
    </repository> 
    <!-- For developing against latest Spring milestones --> 
    <repository> 
     <id>org.springframework.maven.milestone</id> 
     <name>Spring Maven Milestone Repository</name> 
     <url>http://repo.springsource.org/libs-milestone-local</url> 
     <snapshots><enabled>false</enabled></snapshots> 
    </repository> 
11

Maven은 파일을 캐시에 보관하고 다시 시도하지 않습니다. .m2 디렉토리를 삭제하면 수동으로 '도우미'할 수 있습니다. 그러면 친구가 이전 depedencies에 대한 모든 것을 다운로드합니다.

0

내 EAR 프로젝트에 2 개의 모듈 * .ear 및 * .war가 있고 mvn eclipse:eclipse을 시도 할 때 *.war 프로젝트에서이 종속성 오류가 발생했습니다. *.war 프로젝트에서 utf-8 인코딩 문제를 해결하여이 문제를 해결했습니다. mvn-X 또는 -e 옵션이 도움이되지 않았습니다.

0

문제의이 종류는 두 가지 이유에 의해 발생 :

  1. MVN 설정의 설정은 (. 즉, ~/.m2/Settings.XML이가) 잘못 종속성의 철자가 잘못

대부분의 종속성을 다운로드 할 수있는 경우 이유 1이 가장 가능성이 큰 버그 일 수 있습니다. 반대로 대부분의 종속성에 문제가있는 경우 settings.xml을 살펴 봐야합니다.

글쎄, 나는 오후 내내 문제를 해결하려고 노력했다. 마침내 나는 그것을 얻었다. 내 문제는 settings.xml에서 발생하지만 settings.xml의 맞춤법이 잘못되었거나 잘못되었지만 activeProfiles의 손실이 발생합니다.

0

수동으로 항아리를 다운로드 한 다음 항아리가 저장된 폴더에서 명령을 실행

MVN 설치 : 설치 파일 -dfile = jar_file_name의 .jar-DgroupId = GROUP_ID -DartifactId = artifact_id -Dversion =version_no -Dpackaging = 항아리

JAR 파일, jar_file_name, GROUP_ID, artifact_id 및 version_no는 maven 저장소 페이지에서 사용 가능합니다.

행복한 코딩 :)

관련 문제