Мевен не міг вирішити залежності, артефакти не вдалося вирішити


132

Це повинен бути робочий проект від мого друга. Він продемонстрував проект прямо переді мною, а потім я скопіював проект, імпортував його як існуючий проект Maven (я використовую m2eclipseплагін).

І тоді ця помилка трапляється. Ця помилка може бути відтворена щоразу, коли я намагаюся щось створити з 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:

<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).

Що я пропускаю?


дивіться ваш шлях у системній змінній. У моєму випадку шлях до maven 3 був правильним у змінній користувача, але після зміни шляху до maven 2 у системній змінній він працював чудово. не уявляю, чому
aastha

Відповіді:


91

Схоже, вам не вистачає деяких репостів Maven. Попросіть свого друга .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 /, і Maven більше не намагається їх завантажувати. І він поділився записами в сховищі, деякі схожі на вашу знахідку, і зараз це справно працює. Дякую за ваш час! І якщо я можу знати, які ключові слова ви використовуєте, щоб дізнатися, які сховища використовувати? Я спробував гуглінг також учора, але я закінчився жалюгідним. haha
bertie

6
Я знав, що це проблема із сховищем через попереджувальні повідомлення "POM для xxx відсутня". Тож я просто шукав "Springsource maven" і придумав поширений проект про джерела джерела, і його запис для налаштування його на роботу з Maven.
wmorrell

Його перша помилка артефакту - це наданий jar com.springsource.javax.servlet. Якщо це передбачено, чому це може мати щось спільне з налаштуванням.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. Поставивши це тут, якщо хтось інший googles за нього і досягне цієї відповіді (як я це зробив).


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>

Я спробував це, і досі помилково? Ось частковий вихід із затемнення після виконання пакетного завдання: Не вдалося виконати мету на проектному джекпоті: Не вдалося вирішити залежності для проекту 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> ....
bertie

@Albert Kam. Оновлена ​​відповідь, щоб включити посилання на центральне сховище Maven для зниклих артефактів
Рагурам

Приставка com.springsource означає , що артефакти надходять зі сховища весни підприємства
ейс

5

Завантажте банку вручну та виконайте команду з папки, в якій зберігається jar:

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 сторінки.


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>

4
mvn clean install -U

Вирішив мою проблему. Оскільки репости були кешовані, мені потрібно було змусити її отримати останню версію.


1

У мене є подібне повідомлення, і моєю проблемою були деякі налаштування проксі в моїх настройках.xml. Тож я відключив їх, і все працює добре.


1

Цей вид проблем викликаний двома причинами:

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

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

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


0

У мене була ця проблема. У моєму випадку це було спричинено тим, що IntelliJ Idea возився з деякими файлами pom.xml (що, здається, із задоволенням робить!). Я просто повернувся до оригінальної копії, і все працювало знову!


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 process або Maven central", я не дуже розумію, чи можете ви вказати ці ...
Duc Thanh

0

Натрапили на таке питання. Першопричиною є папка .m2. Ви повинні переконатися, що те, що ви намагаєтеся отримати, присутнє там у вашій папці .m2 (це ваше місцеве репо). Якщо речі там, то ви добрі. Зазвичай це присутня всередині папки користувачів у вашій системі (будь то mac / linux чи навіть Windows)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.