Пакет mvn завершается сбоем из-за отсутствия требуемого артефакта, хотя он существует в моем удаленном репозитории.

Я пытаюсь запустить mvn clean package в своем проекте Maven, но это не удается с сообщением:

"необходимый артефакт отсутствует" для артефакта net.ezswitch:ResourcesComponent:jar:0.0.14

Я настроил свой settings.xml так, чтобы он включал мой удаленный репозиторий, и если я перемещаюсь в своем браузере, я действительно могу найти этот Jar в своем репозитории, но Maven почему-то не может.

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

Я использую Maven 2.2.1 на MAC OS X Lion.

Вот мои настройки.xml:

<localRepository>/Users/hordine/.m2/repository</localRepository>
<servers>
  <server>
      <id>LiquixRepository</id>
      <username>henrique</username>
      <password>xxxxx</password>
      <configuration>
          <httpConfiguration>
              <put>
                  <params>
                      <param>
                          <name>http.authentication.preemptive</name>
                          <value>%b,true</value>
                      </param>
                  </params>
              </put>
          </httpConfiguration>      
      </configuration>
  </server>

  <server>
      <id>dev.liquix.eu</id>
      <username>henrique</username>
      <password>xxxxx</password>
  </server>
  <server>
      <id>ezpay-dev.liquix.eu</id>
      <username>henrique</username>
      <password>xxxxx</password>
  </server>
</servers>
<profiles>
  <profile>
      <id>ezswitch</id>

      <properties>
          <tomcat.home>/System/Library/tomcat</tomcat.home>
          <subversion.user>henrique</subversion.user>
          <subversion.password>xxxxx</subversion.password>
      </properties>

      <activation>
          <jdk>1.6</jdk>
      </activation>

      <repositories>
          <repository>
              <id>central</id>
              <name>EzSwitch Cache</name>
              <layout>default</layout>
              <url>http://ezpay-dev.liquix.eu:9998/repository</url>
          </repository>
          <repository>
            <id>central_maven1</id>
            <name>EzSwitch Cache2</name>
            <layout>legacy</layout>
            <url>http://ezpay-dev.liquix.eu:9998/repository</url>
          </repository>
      </repositories>


      <pluginRepositories>
          <pluginRepository>
              <id>central</id>
              <name>EZswitch</name>
              <url>http://ezpay-dev.liquix.eu:9998/repository</url>
              <snapshots>
              </snapshots>
              <releases>
              </releases>
          </pluginRepository>
      </pluginRepositories>

  </profile>
</profiles>
<activeProfiles>
    <activeProfile>ezswitch</activeProfile>
</activeProfiles>

И все сообщение об ошибке, которое я получаю:

[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Missing:
----------
1) net.ezswitch:ResourcesComponent:jar:0.0.14

  Try downloading the file manually from the project website.

  Then, install it using the command: 
      mvn install:install-file -DgroupId=net.ezswitch -DartifactId=ResourcesComponent -Dversion=0.0.14 -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there: 
      mvn deploy:deploy-file -DgroupId=net.ezswitch -DartifactId=ResourcesComponent -Dversion=0.0.14 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency: 
    1) eu.liquix:RegistrationSolution:war:0.4.60-SNAPSHOT
    2) net.ezswitch:ResourcesComponent:jar:0.0.14

----------
1 required artifact is missing.

for artifact: 
  eu.liquix:RegistrationSolution:war:0.4.60-SNAPSHOT

from the specified remote repositories:
  central (http://ezpay-dev.liquix.eu:9998/repository),
  central_maven1 (http://ezpay-dev.liquix.eu:9998/repository)


    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:711)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

Но если я перейду через свой браузер в это место, я увижу Артефакт в следующем месте:

http://ezpay-dev.liquix.eu:9998/repository/net/ezswitch/ResourcesComponent/0.0.14/ResourcesComponent-0.0.14.jar

Буду благодарен за любую помощь. Заранее спасибо.

Энрике Ордине


person Henrique Ordine    schedule 14.06.2012    source источник
comment
это будет выглядеть как какой-то пользовательский компонент. Вы уверены, что этот компонент имеет правильный pom и использует правильную упаковку? он когда-нибудь работал на любом компьютере? как он был установлен? есть ли у maven подключение к серверу? Вы пытались запустить maven в режиме отладки, чтобы увидеть подробную информацию?   -  person eis    schedule 18.06.2012
comment
Да, у него есть связь с сервером, иначе он выйдет из строя с другим исключением? Он работает на всех компьютерах моих коллег. Файлы POM и Jar есть. Завтра я опубликую то, что говорит файл POM. Что вы имеете в виду в режиме отладки? с опцией -e?   -  person Henrique Ordine    schedule 18.06.2012
comment
Хорошо, если это работает для других, это определенно исключает любую проблему с POM. Я имел в виду вариант -X.   -  person eis    schedule 18.06.2012
comment
Превосходно! Когда я включал -X, я получал предупреждение: [ПРЕДУПРЕЖДЕНИЕ] Невозможно получить ресурс 'net.ezswitch:ResourcesComponent:pom:0.0.14' из центрального репозитория (ezpay-dev.liquix.eu:9998/repository): невозможно создать указанный целевой каталог: /Users/hordine/.m2/repository/ net/ezswitch/ResourcesComponent/0.0.14 непосредственно перед сбоем с ResourceDoesNotExistException: невозможно найти ресурс в репозитории для этого компонента. Я изменил разрешения своего локального репозитория на «Чтение и запись для всех» и больше не получаю ошибку.   -  person Henrique Ordine    schedule 19.06.2012
comment
Большое спасибо, Эйс. Хотите создать ответ, чтобы я мог выбрать его как правильный?   -  person Henrique Ordine    schedule 19.06.2012
comment
Здорово, что помогло :) Сделал как просили.   -  person eis    schedule 19.06.2012


Ответы (3)


По-видимому, сообщение об ошибке «необходимый артефакт отсутствует» скрывало фактическую основную причину, которая не была видна в сообщениях. Запуск Maven с включенными отладочными сообщениями (опция -X) распечатает дополнительную информацию, которая даст более подробное представление о том, в чем может быть проблема.

Для справки в будущем, на этот раз ошибка была

[WARNING] Unable to get resource 'net.ezswitch:ResourcesComponent:pom:0.0.14' from repository central (ezpay-dev.liquix.eu:9998/repository):
Specified destination directory cannot be created: /Users/hordine/.m2/repository/net/ezswitch/ResourcesComponent/0.0.14

Который не был виден без флага отладки.

person eis    schedule 19.06.2012

Если вы еще этого не сделали, не могли бы вы попробовать:

mvn -U clean package

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

person Chris Beach    schedule 15.06.2012
comment
Отсутствующий артефакт — это версия выпуска, а не моментальный снимок. Разве -U не только для проверки снимков? - person chad; 15.06.2012
comment
-U обновляет -СНАПШОТЫ, но не только -СНАПШОТЫ. Maven кэширует ошибки разрешения, чтобы не перегружать серверы. -U заставляет повторить неудачную загрузку. - person Chris Beach; 16.06.2012
comment
@Chris Beach Спасибо за ваши усилия. Я пробовал это, но все равно не работает с ошибкой «Отсутствует артефакт». - person Henrique Ordine; 18.06.2012

Просто была эта проблема. Прошел так много решений на моем Mac. В конце концов изменил мой

~/.m2/settings.xml

изменил это:

 <localRepository>${USER.HOME}/.m2/repository</localRepository>

к этому:

 <localRepository>${env.HOME}/.m2/repository</localRepository>

вы можете увидеть все свойства, с которыми вам нужно играть на Mac, набрав в терминале

 export
person Blundell    schedule 08.02.2013