Я хочу развернуть JAR и его зависимости в удаленном хранилище - PullRequest
1 голос
/ 14 сентября 2010

По сути, у меня есть проект и решение для непрерывной интеграции, к которым у меня нет доступа администратора, и которые не могут быть доступны из нашей сети. Следовательно, я хочу развернуть все jar-файлы проекта в нашем центральном репозитории maven, к которому может обратиться решение CI. Они в моем локальном репо, но это довольно сложный проект. Разве я не могу просто установить флаг или что-то еще и развернуть как банку, так и то, что еще есть в локальном репо, от которого зависит баночка?

Хорошо, у меня была собственная идея, так как я впервые написал это. Как насчет этого:

  1. Перенесите мой локальный репозиторий Maven на новое имя.
  2. Выполните сборку с флагом -U, чтобы создать новый репозиторий только с тем, что мне нужно для этого проекта.
  3. Выполнить слияние недавно созданного локального репо с удаленным репо.

Ответы [ 5 ]

1 голос
/ 17 сентября 2010

Вот как я справился с этим:

Сначала я скопировал свой локальный репозиторий Maven под новым именем. Затем я запустил «mvn -U clean install», убедившись, что в полученном локальном репозитории maven содержатся только файлы jar, необходимые для этой конкретной сборки. Далее я создал этот скрипт (подробно объяснил для пользователей Windows):

#!/bin/bash

for I in `find ~/.m2 -name "*.jar"`
do
        J=`echo $I | sed 's/jar$/pom/'`
        mvn deploy:deploy-file -DpomFile=$J -Dfile=$I -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep
done

Для тех, кто не читает BASH, он получает полный путь и имена файлов всех jar-файлов в подкаталоге .m2 домашнего каталога пользователей. Обычно это локальный репозиторий пользователя. Затем он копирует это и изменяет расширение файла с «jar» на «pom» на копии. Затем мы выполняем команду maven ниже:

mvn deploy:deploy-file -DpomFile=[pom file name here] -Dfile=[jar file name here] -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep

Кажется, это нормально работает для получения библиотек в моем локальном репо в общий репозиторий.

1 голос
/ 15 сентября 2010

Что сказал дборба. Я написал бы сценарий (bash / ruby) для запуска подключаемого модуля Maven Dependency Plugin, а затем запустил файл deploy с атрибутами GAE, как сообщил модуль зависимостей. Предполагая, что у меня было несколько зависимостей. Некоторые менеджеры репозитория (например, Nexus) хорошо разбираются в информации GAE.

0 голосов
/ 13 декабря 2012

Используйте maven-assembly-plugin для создания jar-with-dependencies, который создаст один исполняемый jar без внешних зависимостей.См., Например,

Как создать исполняемый файл JAR с зависимостями с помощью Maven?

0 голосов
/ 15 сентября 2010

В своем блоге я описал похожий сценарий: Развертывание иерархии папок в репозитории Maven .Он использует GMaven (Groovy, встроенный в Maven).Если вы возьмете код из этого примера, пропустите обход каталога и вместо этого пройдитесь по зависимостям проекта, вы почти должны быть там.

0 голосов
/ 14 сентября 2010

Проверьте Maven Deploy Plugin Описание и использование. Я думаю, что файл-развертывание mojo, хотя и предназначен для развертывания артефактов, созданных не maven, может помочь вам сделать то, что вы хотите.

...