Как я заставляю Знатока использовать корректные репозитории?

Я просто проверил некоторые проекты и потребность создать их, однако я установил Знатока некоторое время назад (6 месяцев, возможно?) и действительно не использовали его с тех пор - pom.xml для проекта, который я имею, не имеет этого "http://repo1.maven.org/myurlhere" нигде в нем - это имеет абсолютный URL, где знаток repo для проекта, но знаток все еще пытается загрузить от общего знатока repo:

Macintosh:trunk$ mvn clean install
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/url/project/project/x.x/project-x.x.pom
[INFO] Unable to find resource 'url.project:project:pom:x.x' in repository central (http://repo1.maven.org/)
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

GroupId: url.project
ArtifactId: project
Version: x.x

Reason: Unable to download the artifact from any repository

  url.project:project:pom:x.x

from the specified remote repositories:
  central (http://repo1.maven.org/)

Может любой помогать мне с тем, что я не делаю правильно, в основном я просто проверил проекты из командной строки, редактора CD в каталог и выполнил "mvn чистую установку" - ничто иное. Любая справка значительно ценится.

62
задан Pascal Thivent 2 March 2010 в 12:50
поделиться

3 ответа

По умолчанию Maven всегда будет искать в официальном репозитории Maven, то есть http://repo1.maven.org .

Когда Maven пытается собрать проект, он будет искать в вашем локальном репозитории (по умолчанию ~ / .m2 / repository , но вы можете настроить его, изменив значение в вашем ~ / .m2 / settings.xml ), чтобы найти любую зависимость, плагин или отчет, определенные в вашем pom.xml . Если соответствующий артефакт не найден в вашем локальном репозитории, он будет искать во всех настроенных внешних репозиториях, начиная с репозитория по умолчанию, http://repo1.maven.org .

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

<mirrors>
    <mirror>
        <id>repoMirror</id>
        <name>Our mirror for Maven repository</name>
        <url>http://the/server/</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

Таким образом, вместо обращения к http://repo1.maven.org , Maven свяжется с вашим репозиторием предприятия ( http: // the / server в этом примере).

Если вы хотите добавить еще один репозиторий, вы можете определить новый в своем файле settings.xml:

<profiles>
    <profile>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>foo.bar</id>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <url>http://new/repository/server</url>
            </repository>
        </repositories>

Вы можете увидеть полную модель settings.xml здесь .

Что касается процесса clean , вы можете попросить Maven запустить его в автономном режиме . В этом случае Maven не будет пытаться подключиться к каким-либо внешним репозиториям:

mvn -o clean 
30
ответ дан 24 November 2019 в 16:48
поделиться

По сути, все, что Maven сообщает вам, это то, что определенные зависимости в вашем проекте недоступны в центральном репозитории maven. По умолчанию выполняется поиск в вашей локальной папке .m2 (локальный репозиторий), а затем в любых настроенных репозиториях в вашем POM, а затем в центральном репозитории maven. Посмотрите репозиторий раздел справочника Maven.

Проблема в том, что проект, который был зарегистрирован, не настраивал POM таким образом, чтобы можно было найти все зависимости и построить проект с нуля.

4
ответ дан 24 November 2019 в 16:48
поделиться

файл pom.xml для моего проекта не содержит этого " http://repo1.maven.org/myurlhere "где угодно в нем

Все проекты http://repo1.maven.org/ объявлены как ]) по умолчанию. Этот репозиторий, который называется центральным репозиторием , наследуется, как и другие настройки по умолчанию, от «Super POM» (все проекты наследуются от Super POM). Таким образом, POM на самом деле представляет собой комбинацию Super POM, любых родительских POM и текущего POM. Эта комбинация называется «эффективным POM» и может быть распечатана с использованием цели effective-pom подключаемого модуля Maven Help (полезно для отладки).

И действительно, если вы запустите:

mvn help:effective-pom

Вы увидите по крайней мере следующее:

  <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
    </pluginRepository>
  </pluginRepositories>

он имеет абсолютный URL-адрес, по которому репозиторий maven предназначен для проекта, но maven все еще пытается загрузить из общего репозитория maven

Maven попытается найти зависимости во всех объявленных репозиториях, в том числе в центральном репозитории, который, как мы видели, присутствует по умолчанию.Но, согласно трассировке, которую вы показываете, у вас определен только один репозиторий (центральный репозиторий), иначе maven выдаст что-то вроде этого:

Reason: Unable to download the artifact from any repository

  url.project:project:pom:x.x

from the specified remote repositories:
  central (http://repo1.maven.org/),
  another-repository (http://another/repository)

Итак, в основном maven не может найти ] url.project: project: pom: xx , потому что он недоступен в центре.

Но, не зная, какой проект вы проверили (возможно, в нем есть конкретные инструкции) или какая зависимость отсутствует (возможно, ее можно найти в другом репозитории), вам невозможно помочь.

67
ответ дан 24 November 2019 в 16:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: