Maven Не удалось разрешить зависимости, не удалось разрешить артефакты

132

Предполагается, что это рабочий проект моего друга. Он продемонстрировал проект прямо передо мной, а затем я скопировал проект, импортировал его как существующий проект maven (я использую m2eclipseплагин).

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

Выполнение mvn dependency: tree, dependency: list или обычного пакета сборки приведет к той же ошибке.

Ошибка при запуске сборки пакета из eclipse:

[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:

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

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

Берти
источник
увидеть свой путь в системной переменной. В моем случае путь для maven 3 был правильным в пользовательской переменной, но после изменения пути к maven 2 в системной переменной он работал нормально. понятия не имею, почему
aastha

Ответы:

91

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

--edit: после быстрого поиска в Google попробуйте добавить это в свой 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>
wmorrell
источник
5
Спасибо ! Мой друг упомянул, что это работает на его ноутбуке, потому что он уже получил зависимости, кэшированные в .m2 /, и maven больше не пытается их загружать. И он поделился записями репозитория, некоторые из них похожи на вашу находку, и теперь все работает нормально .. Спасибо за ваше время! И если я могу знать, какие ключевые слова вы используете, чтобы узнать, какие репозитории использовать? Вчера я попробовал поискать в Google, но в итоге мне стало плохо. ха-ха
Берти
6
Я знал, что это проблема репозитория, из-за предупреждающих сообщений «POM for xxx is missing». Итак, я просто поискал "springsource maven" и нашел FAQ по проекту springsource и его запись для настройки его для работы с Maven.
wmorrell
Его первая ошибка артефакта - предоставленный jar com.springsource.javax.servlet. Если он предоставлен, почему он имеет какое-либо отношение к setting.xml?
Филип Рего
@PhilipRego .m2/settings.xmlможет указывать списки репозиториев помимо стандартных по адресу repo.maven.apache.org. В этом случае JAR-файлы поступают из репозитория SpringSource, а не в Maven Central. Я предполагал, что у друга репозитории SpringSource перечислены в локальном списке .m2/settings.xml, что не вызывает ошибок поиска, потому что артефакты будут найдены в альтернативных репозиториях maven. Вместо этого JAR-файлы были кэшированы, и поиск вообще не производился.
wmorrell
1
@PhilipRego Эти зависимости не помечены как предоставленные. Даже если зависимость предоставляется, определения интерфейса необходимы для компиляции кода; это означает, что у вас должны быть файлы JAR, определяющие используемые интерфейсы. Все, что это означает для предоставленной зависимости, - это то, что JAR-файлы не упакованы с вашим кодом.
wmorrell
15

Maven хранит ваши файлы в кеше, и не пытайтесь их загрузить повторно. Вы просто можете вручную «помочь» ему, удалив каталог .m2, и тогда наш друг скачает все через старые зависимости.

Чайби Алаа
источник
7

В качестве альтернативного источника той же проблемы в этом ответе в качестве потенциальной причины этой проблемы упоминается использование Maven 3 по сравнению с Maven 2. Насколько я могу судить, это связано с изменениями в разрешении локального репозитория, которое было изменено в Maven 3. Поместите это здесь на тот случай, если кто-то еще погуглиет и найдет этот ответ (как это сделал я).

Шири
источник
7

Для 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>
Raghuram
источник
Я пробовал это, но все еще ошибается? Вот частичный вывод 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 в repository.springsource.com/maven/bundles/release было кэшировано в локальном репозитории, разрешение не будет повторяться до тех пор, пока не истечет интервал обновления <cutted> ....
Берти
@ Альберт Кам. Обновленный ответ, включающий ссылку на центральный репозиторий maven для недостающих артефактов
Рагурам,
Префикс com.springsource означает, что артефакты поступают из репозитория spring Enterprise
eis
5

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

mvn install:install-file -Dfile=*jar_file_name*.jar-DgroupId=*group_id* -DartifactId=*artifact_id* -Dversion=*version_no* -Dpackaging=jar

jar file, jar_file_name, group_id, artifact_idИ version_noдоступны из репозиториев Maven страницы.

CJO
источник
4

У меня была аналогичная проблема, и я исправил ее, добавив следующие репозитории в свой 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>
AAgg
источник
4
mvn clean install -U

Решил мою проблему. Поскольку репозитории были кэшированы, мне нужно было заставить его получить последнюю версию.

Бурак Каан Билгехан
источник
1

У меня есть аналогичное сообщение, и моя проблема заключалась в некоторых настройках прокси в моем файле settings.xml. Я отключил их, и все работает нормально.

kdoteu
источник
1

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

  1. заклинание зависимости неверно
  2. конфигурация настройки mvn (т.е. ~ / .m2 / settings.xml) неверна

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

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

Будет
источник
0

У меня была эта проблема. В моем случае это было вызвано тем, что IntelliJ Idea возился с некоторыми файлами pom.xml (что, похоже, нравится делать!). Я просто вернулся к исходной копии, и все снова заработало!

JonnyRaa
источник
0

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

Эдуардо Деннис
источник
0

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

Барун
источник
0

Оказывается, это произошло из-за брандмауэра на моем компьютере. Отключение сработало для меня.

Дык тхань
источник
1
Хотя отключение брандмауэра на вашем компьютере может сработать, в зависимости от настроек вашей сети я бы рекомендовал поискать более безопасное решение, например, добавив исключение для процесса maven или maven central ... Похоже, что неправильно настроенный / очень строгий брандмауэр для хотя я
Козерог
@Capricorn, верно, это не лучшее, но для меня я попробовал все рекомендованные решения, и он отлично работает с этим. Если у вас есть лучшее решение, скажите, пожалуйста, спасибо !!! отредактировано: вы упомянули «добавление исключения для процесса maven или maven central», я действительно не понимаю, вы можете указать это ...
Дык Тхань
0

Столкнулись с такой проблемой. Основная причина - папка .m2. Вы должны убедиться, что все, к чему вы пытаетесь получить доступ, присутствует в вашей папке .m2 (это ваше локальное репо). Если материал есть, то все в порядке. Обычно это находится внутри папки пользователей в вашей системе (будь то Mac / Linux или даже Windows).

Акаш Верма
источник