2016-06-23 5 views
1

Я хочу развернуть сторонний набор библиотек в nexus после их создания из источника с помощью maven.Как развернуть сторонний набор libs для Nexus

Я думал, что я смогу просто использовать mvn deploy, но я получаю следующее сообщение:

[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ dcm4che-parent --- 
Uploading: scp://www.dcm4che.org:443/home/maven2/org/dcm4che/dcm4che-parent/3.3.7/dcm4che-parent-3.3.7.pom 
The authenticity of host 'www.dcm4che.org' can't be established. 
RSA key fingerprint is 41:7f:10:be:8d:15:30:f1:91:59:95:c7:5d:63:f7:31. 
Are you sure you want to continue connecting? (yes/no): yes 
Password: : 

Это выглядит для меня, как он пытается развернуть в www.dcm4che.org и не мой связующей репо ,

Могу ли я использовать mvn deploy таким образом?

Я могу развернуть свои собственные библиотеки в nexus таким образом без каких-либо проблем.

Что я делаю неправильно?

UPDATE

После советов, приведенных в this answer я выполнил следующую команду:

mvn deploy -DaltDeploymentRepository=nexus::default::http://192.168.50.200:8081/nexus/content/repositories/thirdparty 

и я получаю следующее сообщение об ошибке:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not transfer artifact org.dcm4che:dcm4che-parent:pom:3.3.7 from/to nexus (http://192.168.50.200:8081/nexus/content/repositories/thirdparty): Failed to transfer file: http://192.168.50.200:8081/nexus/content/repositories/thirdparty/org/dcm4che/dcm4che-parent/3.3.7/dcm4che-parent-3.3.7.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1] 

я добавил запись в мой settings.xml следующим образом:

<servers> 
    <server> 
     <id>thirdparty</id> 
     <username>deployment</username> 
     <password>password</password> 
     <configuration></configuration> 
    </server> 
</servers> 

второго ОБНОВЛЕНИЕ

Я попытался следующие варианты командной строки, но до сих пор не могу заставить его работать. Документация maven не помогает.

mvn deploy -DaltDeploymentRepository=thirdparty::default::http://192.168.50.200:8081 

производит ошибку:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not find artifact org.dcm4che:dcm4che-parent:pom:3.3.7 in thirdparty (http://192.168.50.200:8081) -> [Help 1] 

и

mvn deploy -DaltDeploymentRepository=thirdparty::default::http://192.168.50.200:8081/nexus/ 

производит ошибку:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not transfer artifact org.dcm4che:dcm4che-parent:pom:3.3.7 from/to thirdparty (http://192.168.50.200:8081/nexus/): Failed to transfer file: http://192.168.50.200:8081/nexus/org/dcm4che/dcm4che-parent/3.3.7/dcm4che-parent-3.3.7.pom. Return code is: 405, ReasonPhrase: HTTP method PUT is not supported by this URL. -> [Help 1] 

и

mvn deploy -DaltDeploymentRepository=nexus::default::http://192.168.50.200:8081/nexus/content/repositories/ 

производит ошибку:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not find artifact org.dcm4che:dcm4che-parent:pom:3.3.7 in nexus (http://192.168.50.200:8081/nexus/content/repositories/) -> [Help 1] 

Окончательная UPDATE

Для кого-то, кто может наткнуться на это, следующая команда работала. Спасибо A_Di-Matteo за помощь.

mvn deploy -DaltDeploymentRepository=thirdparty::default::http://192.168.50.200:8081/nexus/content/repositories/thirdparty 
+0

Во-первых, я сомневаюсь, что использование протокола «scp» в качестве протокола является хорошей идеей и обычно не используется Nexus. (http/https). Кроме того, вам нужно изменить distributionManagement где-то в pom.xml .... – khmarbaise

+0

Я не знаю, где и как 'scp' входит в развертывание. Я ничего не сказал, сознательно. – ksl

+0

@ksl id в ваших настройках snippet - это 'thirdparty', а из командной строки вы передали' nexus', это несоответствие –

ответ

1

Вы, вероятно, отсылая к dcm4che-parent-3.3.7.pom артефакта, из которых:

<distributionManagement> 
    <repository> 
     <id>www.dcm4che.org</id> 
     <name>dcm4che Repository</name> 
     <url>scp://www.dcm4che.org:443/home/maven2</url> 
    </repository> 
</distributionManagement> 

Как вы можете видеть, его distributionManagement имеет в виду хозяина, упомянутой в сообщении об ошибке сборки, которая используется по умолчанию один.

Если вы хотите разместить на внутренней Nexus, то вы должны использовать опцию altDeploymentRepository:

Specifies an alternative repository to which the project artifacts should be deployed (other than those specified in <distributionManagement>). Format: id::layout::url .

Его свойство пользователя altDeploymentRepository.

Таким образом, вы можете ссылаться на Maven следующим образом:

mvn clean deploy -DaltDeploymentRepository=yourId::layout::URL 

который должен соответствовать хранилище, указанный в вашем Maven settings.xml.


Как правило, вы не должны загружать на Nexus общественных артефактов в этом случае: Nexus может получить их для вас и использовать в качестве дополнительного централизованного пункта кэша/управления для других удаленных репозиториев.

Если вы изменяете общественные артефакты, а затем публиковать их в своем внутреннем Nexus, то он действительно посоветовал изменить их Maven coordinates, по крайней мере, добавляя classifier указав то связанное с вашей/компания-имя патча/полезной детализации.

+0

Так что я должен просто добавить репо dcm4che в мою конфигурацию nexus? И когда я создаю свое приложение, которое зависит от dcm4che, maven будет тянуть то, что ему нужно, и строить его тогда? – ksl

+0

@ksl Да, это рекомендуемый подход, не нужно загружать каждую внешнюю зависимость, в которой вы нуждаетесь. Nexus потянет их за вас и сохранит в кеше. –

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