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

Это должен быть рабочий проект моего друга. Он продемонстрировал проект прямо передо мной, а затем я скопировал проект, импортировал его как существующий проект 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:

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

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

18 ответов

Решение

Похоже, вам не хватает репозиториев 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>
mvn clean install -U

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

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

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>

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

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

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

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

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

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

Попробуйте запустить

mvn dependency:purge-local-repository clean install -U

Это решило аналогичную проблему, с которой я столкнулся. Дополнительную информацию можно найти по адресу https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html . Этот ответ был взят и адаптирован из предыдущего ответа в связанной теме: /questions/44172500/force-maven-update/44172602#44172602 .

Кроме того, поскольку я работаю под прокси-сервером для подключения к Интернету в Windows, хотя и устанавливаю переменные среды HTTP_PROXY, HTTPS_PROXY и NO_PROXY, мне также пришлось установить их в файле settings.xml maven:

      <settings>
  <proxies>
    <proxy>
        <id>httpproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>localhost|*.example.com</nonProxyHosts>
        <username>username</username>
        <password>password</password>
    </proxy>
    <proxy>
        <id>httpsproxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>localhost|*.example.com</nonProxyHosts>
        <username>username</username>
        <password>password</password>
    </proxy>

  </proxies>
</settings>

Эта последняя конфигурация была адаптирована из другого ответа в Stackoverflow: /questions/34597526/kak-ya-mogu-ispolzovat-maven-cherez-proksi/34597537#34597537 . См. подробности о настройке конфигурации прокси в Maven здесь: https://maven.apache.org/guides/mini/guide-proxys.html . Другие пользователи успешно указали прокси для Maven, установив другую переменную среды (в Windows), например (см. здесь: /questions/8560754/nastrojki-proksi-maven-ne-rabotayut/8560760#8560760):

      MAVEN_OPTS
-Dhttp.proxyHost=proxy.myproxy.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=proxy.myproxy.com -Dhttps.proxyPort=80

Однако для меня это сработало, просто установив эти значения в файле C:/Users/myUser/.m2/settings.xml.

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

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

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

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

У меня была такая же проблема, однако я исправил эту проблему, поместивsettings.xmlфайл в.m2папка . Это точный путь, по которому я разместил файл settings.xml.C:/Users/myUser/.m2/settings.xmlфайл.

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

В моем случае это было связано с тем, что для поиска артефактов был направлен неправильный репозиторий maven. Кажется, у моей компании есть собственный репозиторий, к которому нужно обращаться для получения всех артефактов и зависимостей. Добавление ссылки на сервер, размещенный компанией, в моем файле settings.xml внутри папки .m2 устранило проблему.

       <mirrors>
  <mirror> <!--Send all requests to the public group -->
   <id>{{COMPANY_SERVER_ID}}</id>
   <mirrorOf>external:*</mirrorOf>
   <url>{{COMPANY_SELF_HOSTED_REPO_URL}}</url>
  </mirror>
 </mirrors>

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

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

Просто удалите или вырежьте файл settings.xml из папки C:/Users/username/.m2/, и это решит проблему.

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

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

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

Другие вопросы по тегам