2014-09-15 2 views
1

Я искал целый день для решения, но пока ничего не работает.Maven - используйте удаленный репозиторий также как локальный репозиторий

Задача: У меня есть два проекта Foo и Commons с использованием Maven. Foo зависит от Commons. Commons развертывается через scp в удаленный репозиторий на сервере. Тот же сервер также проверяет Foo и строит его. Но когда сервер пытается построить Foo он пытается получить доступ к Commons Jar удаленно (через УПП) и выдается ошибка:

Не удалось передать метаданные GroupID: обыкновенные: 0.0.1-SNAPSHOT/Maven-метаданные. xml from/to my-repository (scp: //server/.m2/repository): Не удается подключиться. Причина: SSH_MSG_DISCONNECT: 2 Слишком много сбоев аутентификации для пользователя

Edit: Развертывание фонда на сервер работ. Локальная упаковка Foo также работает. Я использую Maven 3.0.5 на сервере.

То, что я пытался до сих пор:

  • Декларирование локальный репозиторий в Foo «s pom.xml
  • объявляя org.apache.maven.wagon:wagon-file:2.6 как расширение в Foo 's pom.xml
  • Изменение версии Commons' из 0.0.1-SNAPSHOT до 0.0.1-RELEASE

Фон: Проект Commons используется другими проектами, и несколько человек работают над этими проектами. Этим людям не нужно проверять проектные сообщества, но они всегда должны иметь доступ к самому современному Commons Jar.

settings.xml в ~/.m2 /:

... 
    <servers> 
    <server> 
     <id>my-repository</id> 
     <username>user</username> 
     <password>password</password> 
    </server> 
    </servers> 
    ... 

Common в 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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupId</groupId> 
    <artifactId>commons</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>commons</name> 

    <distributionManagement> 
    <repository> 
     <id>my-repository</id> 
     <url>scp://server/.m2/repository</url> 
    </repository> 
    </distributionManagement> 

    <build> 
    ... 
    <extensions> 
     <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-ssh</artifactId> 
     <version>2.6</version> 
     </extension> 
    </extensions> 
    </build> 

    <dependencies> 
    ... 
    </dependencies> 

</project> 

pom.xml Foo в:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupId</groupId> 
    <artifactId>foo</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 

    <repositories> 
     <repository> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
      <id>my-repository</id> 
      <url>scp://server/.m2/repository</url> 
     </repository> 
    </repositories> 

    ... 

</project> 
+1

вы можете добавить вы pom.xml для ваших проектов, пожалуйста? –

+0

... и ваши 'settings.xml' ...? У вас есть правильный '' раздел в вашем 'settings.xml'? – carlspring

+0

@ carlspring Да, я указал сервер в settings.xml.Развертывание Common Jar на сервере работает, но упаковка Foo Jar на сервере не работает. Проблема в том, что сервер пытается подключиться к себе удаленно, чтобы получить доступ к Commons Jar. –

ответ

1

Чтобы сделать i t, мне пришлось добавить зеркало для серверного репозитория на сервере .m2/settings.xml. <mirrorOf> должен быть таким же, как <id> репозитория, определенный в pom.xml.

сервер: ~/.m2/settings.xml:

... 
    <mirrors> 
    ... 
    <mirror> 
     <id>local-mirror</id> 
     <mirrorOf>my-repository</mirrorOf> 
     <url>file://${user.home}/.m2/repository</url> 
    </mirror> 
    </mirrors> 
    ... 

Источник: http://maven.apache.org/guides/mini/guide-mirror-settings.html

+0

Я обнаружил, что, если я хочу, чтобы все было разрешено здесь, а не для того, чтобы смотреть в maven, мне нужно было использовать « внешний: *' –

Смежные вопросы