Maven репо не работает

1

Я пытаюсь добавить репозитории Maven mvnrepository.com, но мне кажется, что я не делаю этого.

<repository>
    <id>mvnrepository</id>
    <url>http://mvnrepository.com/artifact/</url>         
</repository>

Я могу ясно видеть, что артефакт, который я ищу, есть http://mvnrepository.com/artifact/org.springframework.ldap/spring-ldap/1.3.1.RELEASE

Но мой выпуск сборки maven сообщает мне, что он не

Скачивание: http://mvnrepository.com/artifact//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс 'org. springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE 'в репозитории mvnrepository (http://mvnrepository.com/artifact/)

Что я делаю не так? Как я могу загрузить артефакт весны ldap?

ОБНОВЛЕНИЕ Я пробовал несколько артефактов, но все они терпят неудачу

Скачивание: http://repo1.maven.org/maven2//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс ' org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE 'в репозитории maven central repo (http://repo1.maven.org/maven2/) Скачивание: http://download.java.net/maven/2//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс 'org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE 'в репозитории java.net repo (http://download.java.net/maven/2/) Скачивание: http://maven.springframework.org/external//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс 'org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE' в репозитории весны external (http://maven.springframework.org/external/) Скачивание: http://search.maven.org//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3. 1.RELEASE.jar [INFO] Невозможно найти ресурс 'org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE' в репозитории repo.jenkins-ci.org(http://search.maven.org/) Скачивание: https://репозиторий. jboss.org//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE 'в репозитории mvnrepository (https://repository.jboss.org/) Скачивание: http://repo1.maven.org/maven2//org/springframework/ldap/spring-ldap/1.3. 1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс 'org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE' в центральном репозитории (http://repo1.maven.org/maven2/)

Если я не определяю какие-либо репозитории в settings.xml, тогда ответ будет следующим:

Скачивание: http://repo1.maven.org/maven2/org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO] Невозможно найти ресурс 'org.springframework.ldap: spring-ldap: jar: 1.3.1.RELEASE 'в центральном хранилище (http://repo1.maven.org/maven2)

UPDATE Кроме того, я использую gradle в других проектах, и это работает без проблем

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile 'org.springframework.ldap:spring-ldap:1.3.1.RELEASE'
}

Поэтому я уверен, что есть некоторые maven-репо, о которых я не знаю

  • 1
    Почему вы хотели бы добавить это. То, что вы ищете для spring-ldap, доступно в Maven Central, так что это настроено по умолчанию, и в этом случае нет необходимости изменять / добавлять репозитории.
  • 3
    mvnrepository - это не репозиторий, а поисковая система . Вы не должны добавлять его в свои репозитории
Показать ещё 1 комментарий
Теги:
maven
spring

3 ответа

2
Лучший ответ

Артефакт spring-ldap - тип pom. Чтобы указать любой артефакт, отличный от jar, вам нужно указать тип. Итак, артефакт, который вам нужно указать в вашем помпе

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap</artifactId>
    <version>1.3.1.RELEASE</version>
    <type>pom</type>
</dependency>

Надеюсь это поможет

  • 0
    Извинения, techboost. Я не видел ваш <type>pom</type> . Работает отлично. Извините еще раз.
1

Как упоминалось в @techbost, maven не может разрешить spring-ldap-1.3.1.RELEASE.jar из любого репозитория, потому что такой банкой не существует.

Посмотрим, что происходит. Вы определяете свою зависимость следующим образом:

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap</artifactId>
    <version>1.3.1.RELEASE</version>
</dependency>

Если вы не укажете тег type, тип по умолчанию - jar. Это означает, что Maven пытается ударить по этому URL-адресу, чтобы получить файл: http://repo1.maven.org/maven2/org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1. RELEASE.jar

Как видите, этот файл не существует. Это связано с тем, что модуль spring-ldap не имеет банку, это модуль упаковки pom, что означает, что он имеет только файл pom, который имеет общую конфигурацию для подмодулей и определение этих подмодулей.

Затем вы можете определить тип, который будет pom:

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap</artifactId>
    <version>1.3.1.RELEASE</version>
    <type>pom</type>
</dependency>

Можно подумать, что это должно сработать, потому что теперь вы инструктируете maven загружать файл pom, который существует: http://repo1.maven.org/maven2/org/springframework/ldap/spring-ldap/1.3.1.RELEASE/весна-1.3.1.RELEASE.pom LDAP

Ну, это не сработает. Это потому, что артефакт pom не является реальной зависимостью (только для напоминаний - зависимости - это файлы, которые добавлены в ваш путь к классам для компиляции, тестирования и упаковки, поэтому нет смысла иметь файл pom в classpath).

То, что вам действительно нужно, является одним из двух:

  • Используйте специальный подмодуль весны-ldap, например, spring-ldap-core.
  • Используйте all classifer модуля spring-ldap. В этом случае вы принесете все модули в одной банке. Хотя это может облегчить вашу конфигурацию, оно сильно обескураживает частицу.

В первом случае ваше выражение о зависимости будет выглядеть так:

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap-core</artifactId>
    <version>1.3.1.RELEASE</version>
</dependency>

Это работает.

В следующем случае ваше выражение о зависимости будет следующим:

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap</artifactId>
    <version>1.3.1.RELEASE</version>
    <classifier>all</classifier>
</dependency>

Это тоже работает, хотя это действительно плохая идея.

Сайт PS mvnrepository не является реальным хранилищем maven. Это сайт для поиска и просмотра артефактов в maven-central и использовался, когда у maven central не было поиска.

Я могу предложить два репозитория:

  1. jcenter - надмножество Maven Central, https по умолчанию, веб-идентификация издателей, более богатый пользовательский интерфейс и т.д. Более подробную информацию см. на странице https://bintray.com/bintray/jcenter (кнопка Set me up даст вам инструкции о том, как использовать это с Maven)
  2. Maven Central над https - вот инструкции по настройке Maven.
0

Я не думаю, что вам нужно добавить дополнительный тег репозитория для извлечения артефакта spring-ldap.

Вам нужно указать репозиторий только тогда, когда артефакт не относится к репозиторию maven по умолчанию, например, Jboss Repository https://repository.jboss.org/, вам нужно добавить это в свой pom для получения любого артефакта этого репозитория,

вы просто добавляете ниже зависимость в своем пом, и она должна работать.

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap</artifactId>
    <version>1.3.1.RELEASE</version>
</dependency>

У вас возникли проблемы с загрузкой артефакта без указания репозитория?

  • 0
    Весенний артефакт доступен в Maven Central. Поэтому нет необходимости в дополнительных репозиториях. search.maven.org/...
  • 0
    Я обновил свой ответ последними журналами сборки maven.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню