2015-10-21 4 views
2

Мне нужно передать проект третьему лицу. В проекте используется Maven для управления зависимостями, и у нас установлен менеджер хранилища Nexus.Как сдать репозиторий maven?

Я думал, что это было бы легко создать репозиторий со всеми зависимостями, необходимых для проекта, используя dependency:go-offline плагин/цели, как

mvn dependency:go-offline -Dmaven.repo.local=c:/handOver/.m2/repository 

Хранилище создается, как ожидается, с помощью этой команды. Я скопировал этот репозиторий на целевую машину и установил localRepository (settings.xml) в папку репозитория .

Попытка создания проекта на целевой машине неудачно терпит неудачу. Процесс сборки жалуется на недостающие артефакты, хотя они находятся на пути, который можно найти в журналах maven (даже используя переключатель -o/offline).

По-прежнему существует отношение к нашему серверу Nexus. Поэтому мы удалили все файлы _maven.repositories в репозитории, но это тоже не помогло.

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

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


из бревен

(баночка, которая должна быть решена, можно найти по вошедшему пути (C: \ handOver.m2 \ репозитория {myPathToJar}), но не может быть решена на конец.

[DEBUG] Using local repository at C:\handOver\.m2\repository 
... 
[DEBUG] Verifying availability of C:\handOver\.m2\repository\{myPathToJar} 
from [central (https://repo.maven.apache.org/maven2, default, releases)] 
... 
[ERROR] Failed to execute goal on project {myProject}: Could not resolve dependencies for project {myProject}: 
The following artifacts could not be resolved: {myDependency}: Cannot access central (https://repo.maven. 
apache.org/maven2) in offline mode and the artifact {myDependency} has not been downloaded from it be 
fore. -> [Help 1] 
+1

Вы говорите, что даже с опцией '-o', Maven пытается загрузить артефакт, присутствующий в локальном репо? Вы уверены, что местное репо, которое Mavenn использует, является правильным? – Tunaki

+1

@Tunaki Я думаю, что это не попытка загрузки, но файл не может быть разрешен, хотя он есть. Происхождение файла не Maven Central, а наш внутренний репозиторий выпусков, настроенный внутри Nexus. Я не знаю, почему «центральное» появляется в журналах. Вероятно, потому что это репозиторий по умолчанию на целевой машине. – FrVaBe

+0

Этот [ответ] (http://stackoverflow.com/a/16870552/367285) кажется намеком в правильном направлении. Использование флага '-llr' (legacy-local-repository) во избежание рассмотрения источника артефакта выглядит многообещающим. – FrVaBe

ответ

1

dependency:go-offline промахов некоторые переходные зависимости.

То, что работает лучше всего mvn -Dmaven.repo.local=local-repo clean install , Затем вы можете закрепить папку local-repo кому-то еще, и они смогут запустить mvn -o clean install после распаковки local-repo.zip в $ HOME/.m2/repository.

Если вы хотите, чтобы они могли выполнять другие цели, просто замените «clean install».

+0

dam maven. Какова цель перехода в автономный режим? споткнуться новичков? –

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