Я работаю в очень жестко контролируемой организации, которая абсолютно не разрешает доступ к внешним репозиториям.
Я хотел бы использовать среду Spring & Hibernate для наших приложений и использовать maven для разрешения зависимостей и построения проекта..
Я установил нексус-репозиторий "Сторонний" на локальном сервере, теперь пришло время фактически добавлять библиотеки.Hibernate 3.6.7.Final поставляется со следующими банками:
./hibernate-testing.jar
./hibernate3.jar
./lib/required/commons-collections-3.1.jar
./lib/required/dom4j-1.6.1.jar
./lib/required/jta-1.1.jar
./lib/required/slf4j-api-1.6.1.jar
./lib/required/antlr-2.7.6.jar
./lib/required/javassist-3.12.0.GA.jar
./lib/jpa/hibernate-jpa-2.0-api-1.0.1.Final.jar
./lib/optional/c3p0/c3p0-0.9.1.jar
./lib/optional/swarmcache/swarmcache-1.0RC2.jar
./lib/optional/proxool/proxool-0.8.3.jar
./lib/optional/jbosscache/jbosscache-core-3.2.1.GA.jar
./lib/optional/oscache/oscache-2.1.jar
./lib/optional/infinispan/infinispan-core-4.2.1.CR1.jar
./lib/bytecode/javassist/javassist-3.12.0.GA.jar
./lib/bytecode/cglib/cglib-2.2.jar
Spring 3.0.6.RELEASE поставляется со следующим:
org.springframework.aop-3.0.6.RELEASE.jar
org.springframework.jdbc-3.0.6.RELEASE.jar
org.springframework.asm-3.0.6.RELEASE.jar
org.springframework.jms-3.0.6.RELEASE.jar
org.springframework.aspects-3.0.6.RELEASE.jar
org.springframework.orm-3.0.6.RELEASE.jar
org.springframework.beans-3.0.6.RELEASE.jar
org.springframework.oxm-3.0.6.RELEASE.jar
org.springframework.context-3.0.6.RELEASE.jar
org.springframework.test-3.0.6.RELEASE.jar
org.springframework.context.support-3.0.6.RELEASE.jar
org.springframework.transaction-3.0.6.RELEASE.jar
org.springframework.core-3.0.6.RELEASE.jar
org.springframework.web-3.0.6.RELEASE.jar
org.springframework.expression-3.0.6.RELEASE.jar
org.springframework.web.portlet-3.0.6.RELEASE.jar
org.springframework.instrument-3.0.6.RELEASE.jar
org.springframework.web.servlet-3.0.6.RELEASE.jar
org.springframework.instrument.tomcat-3.0.6.RELEASE.jar
org.springframework.web.struts-3.0.6.RELEASE.jar
Я понимаю, что 2 предпочтительных метода развертыванияЗависимости
1) настроить пом;используйте команду "mvn deploy"
2) используйте командную строку, например, для отдельных jar-файлов:
mvn deploy:deploy-file -Durl=file://C:\m2-repo \
-DrepositoryId=some.id \
-Dfile=your-artifact-1.0.jar \
[-DpomFile=your-pom.xml] \
[-DgroupId=org.some.group] \
[-DartifactId=your-artifact] \
[-Dversion=1.0] \
[-Dpackaging=jar] \
[-Dclassifier=test] \
[-DgeneratePom=true] \
[-DgeneratePom.description="My Project Description"] \
[-DrepositoryLayout=legacy] \
[-DuniqueVersion=false]
Для 1) я понимаю, что могу создать один pom для всего спящего режимапроект или создать несколько poms, я думаю, 1 для каждой внешней библиотеки.Например, cglib-2.2.jar может быть своим собственным pom, потому что я знаю, что у Spring аналогичная зависимость, поэтому из-за отсутствия (2) x cglib (s) у меня будет 1 cglib, а затем я включу его какзависимость в моих pom org.spring и org.hibernate соответственно.
Для 2) Я думаю, я мог бы написать сценарий оболочки, чтобы прочитать список файлов и проанализировать информацию GAV из, возможно, другого списка и вывести ихчтобы сделать репо 1 на 1, тогда каждая банка будет указана как зависимость в POM моего проекта.
Эта последняя часть вызывает у меня некоторое замешательство ... Если я разверну весь выпуск Spring как 1 группу - org.Spring иHibernate в другой организации. Hibernate, могут ли быть конфликты между зависимостями (например, cglib)?
Итак, я думаю, мой вопрос:
Какой самый простой, быстрый и требующий минимальных усилий способразвернуть загруженные версии Spring и Hibernate в моем локальном репозитории nexus, чтобы я мог быстро использовать их в своем проекте?(Не нужно перечислять слишком много зависимостей в слишком большом количестве poms.)
Редактировать:
Небольшое разъяснение того, что я хочу.У меня 1 менеджер Nexus работает на локальном сервере (с доступом к интернету).Я хочу иметь возможность загружать из интернет-хранилищ всех зависимостей, которые мне нужны для запуска Spring & Hibernate.Я хочу сделать это ТОЛЬКО ОДИН РАЗ , затем пусть они сидят в моем ВНУТРЕННЕМ Хранилище (Nexus), о котором я хочу НИКОГДА поговорить с центральным, jboss,пружина или любой другой ОБЩЕСТВЕННЫЙ ХРАНИТЕЛЬ, пока я ОСОБЕННО не разрешу.Я хочу иметь возможность включать и выключать это как переключатель.
ON mode = " вы можете получить зависимости от публичных репозиториев"
OFF mode = "вы не должны подключаться к чему-либо внешнему"
Мне кажется, что это можно сделать, выполнив следующие действия:
в Nexus
1) Создать группу
2) Установите прокси для каждого необходимого вам внешнего репозитория
3) Поместите все ваши прокси в 1 группу
на рабочей станции разработчика (это часть I ')я не уверен насчет)
1) отредактируйте файл settings.xml, чтобы переопределить центральное расположение и указать хранилище для локальной группы Nexus, как описано здесь:
зеркала хранилища maven
и здесь
Отключить центральный репозиторий Maven
и здесь
http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html
2) запустить mvn install иликомпилировать или что-то еще, чтобы захватить зависимости.
После этого я не совсем уверен, как это будет работать.Каким-то образом попросите maven отразить внешнюю группу в одном из моих локальных репозиториев Nexus?Я думаю, что я попробую это, вернусь и опубликую свое решение в случае успеха.В то же время, не стесняйтесь комментировать или советовать.