2011-01-10 4 views
85

Это должен быть рабочий проект от моего друга. Он продемонстрировал проект прямо передо мной, а затем я скопировал проект, импортировал его как существующий проект maven (я использую плагин m2eclipse).Maven Не удалось разрешить зависимости, артефакты не могут быть решены

И затем эта ошибка возникает. Эта ошибка может быть воспроизведена каждый раз, когда я пытаюсь создать что-то с maven.

Выполнение зависимости mvn: дерево, зависимость: список или обычный пакет сборки приведет к той же ошибке.

Ошибка от запуска «пакет» строить из затмения:

[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, и включил его в затмение helios, но все-таки та же проблема. Такое же сообщение об ошибке происходит даже тогда, когда я запускаю его в командной строке оболочки (за пределами затмения).

Что мне не хватает?

ответ

68

Похоже, что вам не хватает некоторых репозиториев Maven. Спросите у вашего друга .m2/settings.xml, и вы, вероятно, захотите обновить POM, чтобы включить туда репозитории.

--edit: после некоторого быстрого Googling, попробуйте добавить это к вашему 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 /, и maven больше не пытается их загружать. И он поделил записи в репозитории, некоторые из них похожи на ваши находки, и теперь это сработало хорошо. Спасибо за ваше время! И если я знаю, какие ключевые слова вы используете, чтобы узнать, какие репозитории использовать? Вчера я тоже попробовал googling, но я оказался несчастным. haha – bertie

+6

Я знал, что это проблема с хранилищем из-за отсутствия предупреждающих сообщений «POM для xxx отсутствует». Поэтому я просто искал «springsource maven» и придумал часто задаваемый проект проекта springsource и его запись для настройки его работы с 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> 

Вы также можете добавить Maven центрального хранилища для этих артефактов в случае, если они не доступны в указанных хранилищах.

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

Я пробовал это и все еще ошибочно? Вот частичный вывод из eclipse после выполнения задачи пакета: Не удалось выполнить цель на джекпоте проекта: не удалось разрешить зависимости для проекта 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 как потенциальную причину этой проблемы. Близко, как я могу судить, это связано с изменениями в local repository resolution, которые были изменены в Maven 3. Введя это здесь, если кто-то еще разойдется по нему и дойдет до этого ответа (как и я).

0

У меня тоже была эта проблема, оказалось, что это связано с тем, что NetBeans добавляет что-то в файл pom.xml. Двойная проверка ничего не была добавлена ​​после предыдущих успешных развертываний.

3

У меня была схожая проблема, и я исправил ее, добавив ниже репозитории в моем пом.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, а затем наш друг загрузит все по старым зависимостям.

0

У моего проекта EAR было 2 модуля * .ear и * .war, и я получил эту ошибку зависимостей при *.war при попытке mvn eclipse:eclipse. Решил его, исправив проблему кодирования utf-8 в проекте *.war. mvn-X или -e варианты здесь не помогли.

0

Такого рода проблемы вызваны двумя причинами:

  1. заклинание из зависимости неправильно
  2. конфиг от установки МВН (т. Е ~/.m2/settings.xml) неправильно

Если можно загрузить большинство зависимостей, то причиной 1 может быть наиболее вероятная ошибка. Наоборот, если у большинства зависимостей есть проблема, тогда вы должны взглянуть на settings.xml.

Ну, я попытался исправить свою проблему весь день, и, наконец, я ее получил. Моя проблема возникает в settings.xml, а не в потере или неправильном написании settings.xml, но потеря activeProfiles.

0

Скачать банку вручную, а затем выполнить команду из папки, в которой сохранена баночке:

МВНЫ установка: установка-файл -Dfile = jar_file_name .jar-DgroupId = group_id -DartifactId = artifact_id -Dversion = version_no -Dpackaging = баночка

сосуд файл, jar_file_name, group_id, artifact_id и version_no доступны на странице репозитория maven.

счастливое кодирование :)

Смежные вопросы