В этой статье описывается как настроить Maven, чтобы использовать репозиторий JBoss. Maven использует файл с именем settings.xml, который содержит список репозиториев и другие настройки, которые используются при сборке проектов. По умолчанию файл settings.xml лежит в $MAVEN_HOME/conf/settings.xml. Если вы не хотите изменять конфигурационный файл, который используется всеми пользователями, то можете создать такой же в пользовательской директории в каталоге .m2 (~/.m2/settings.xml) и изменять его. Репозиторий JBoss использует менеджер репозиториев Nexus.
Репозиторий JBoss состоит из нескольких групп, которые обеспечивают объединенное представление нескольких хранищ.
Организация репозитория
Maven-репозиторий JBoss размещен на серверах JBoss.org и состоит из нескольких репозиториев Maven, а также групп репозиториев, каждая из которых имеет конкретное назначение.
Hosted Repositories
Эти репозитории содержат артефакты, собранные сообществом JBoss и располагаются по адресу https://repository.jboss.org/nexus/content/repositories/
- JBoss Releases ( /releases ) – Проекты сообщества JBoss, которые находятся в стадии release.
- JBoss Thirdparty Releases ( /thirdparty-releases ) – Сторонние проекты, которые были изменены и пересобраны сообществом JBoss.
- JBoss Thirdparty Uploads ( /thirdparty-uploads ) – Сторонние артефакты, которые не доступны через proxy-репозитории. Такие артефакты напрямую закачиваются в репозиторий JBoss.
- JBoss Thirdparty Restricted ( /thirdparty-restricted ) – Сторонние артефакты, которые не могут распространяться как открытые (public). Этот репозиторий доступен только для аутентифицированных пользователей.
- JBoss Deprecated ( /deprecated ) – Артефакты из репозитория JBoss, которые больше не используются, но нужны для сборки старых версий проектов.
- Содержит артефакты, которые были скопированы из центрального репозитория, но перемещены в другую группу (groupId).
- Содержит артефакты, у которых GAV (GroupId, ArtifactId, Version) совпадает с артефактами из центрального репозитория, но на самом деле это разные артефакты.
- JBoss Snapshots ( /snapshots ) – снэпшоты от сообщества JBoss.
Proxied Repositories
Эти репозитории представляют прокси для артефактов из сторонних репозиториев. Они расположены по адресу https://repository.jboss.org/nexus/content/repositories/.
- Maven Central ( /central ) – http://repo1.maven.org/maven2/
- Google ( /google ) – http://google-maven-repository.googlecode.com/svn/repository/
- Glassfish ( /glassfish ) – http://download.java.net/maven/glassfish/
- java.net – Maven 2 ( /java.net-m2 ) – http://download.java.net/maven/2/
- java.net – Maven 1 ( /java.net-m1 ) – http://download.java.net/maven/1/
- Apache Incubator ( /apache-incubator ) – http://people.apache.org/repo/m2-incubating-repository/
Со временем этот список может изменяться.
Хранилище групп
- Public JBoss Group ( groups/public-jboss ) – используется пользователями сообщества JBoss. Содержит репозитории releses и snapshot. Не содержит репозиторий “JBoss Deprecated” и прокси-репозитории.
- Public Repositories ( groups/public ) – используется разработчиками сообщества JBoss. Содержит все репозитории JBoss и сторонние репозитории за некоторыми исключениями. Не содержит репозитории “JBoss Deprecated” и “JBoss Restricted”. Содержит все прокси-репозитории кроме “central”.
- Staging Repository Group ( groups/staging ) – содержит все JBoss и thirdparty release репозитории, а также временно созданные хранилища.
Хранилище групп обеспечивает комбинированный вид из нескольких хранилищ в рамках одного URL.
Репозиторий JBoss для пользователей артефактов
Если вы просто хотите использовать артефакты JBoss как зависимости, то рекомендуется использовать группу “jboss-public”. Этот репозиторий содержит только артефакты от JBoss (т.е. этот репозиторий не является прокси для внешних хранилищ). Вот URL этого репозитория:
http://repository.jboss.org/nexus/content/groups/public-jboss/
URL этого репозитория нужно добавить в файл settings.xml или в POM вашего проекта. В этом репозитории хранятся все версии артефактов (release, snapshots и т.д.). Если вам нужны только релизы (releases), то можно использовать следующий прямой URL:
https://repository.jboss.org/nexus/content/repositories/releases/
Web-интерфейс репозиториев JBoss
Web-интерфейс доступен по адресу https://repository.jboss.org/nexus и доступен для всех пользователей. Через web-интерфейс можно увидеть все доступные репозитории и соответствующие им URLы. Этот интерфейс также позволяет осуществлять поиск по репозиторию, что довольно удобно.
Пример настройки settings.xml
Так может выглядеть settings.xml у пользователей репозитория JBoss:
<settings> ... <profiles> ... <profile> <id>jboss-public-repository</id> <repositories> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>jboss-public-repository</activeProfile> </activeProfiles> ... </settings>
Этот профиль будет активен по умолчанию, что позволит использовать артефакты JBoss во время сборки. Если вы хотите отключить этот профиль, то это можно сделать с помощью стандартной команды Maven для отключения профилей:
mvn -P-jboss-public-repository install
Более подробно о настройках Maven можно почитать на странице проекта Maven.
В апреле 2010 года команда JBoss устроила чистку своих репозиториев в результате чего, некоторые артефакты отправились в репозиторий Deprecated. Чтобы подключить его в settings.xml, нужно создать такой профиль:
<profile> <id>jboss-deprecated-repository</id> <repositories> <repository> <id>jboss-deprecated-repository</id> <name>JBoss Deprecated Maven Repository</name> <url>https://repository.jboss.org/nexus/content/repositories/deprecated/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> </repositories> </profile>
Использование JBoss Maven Plugins
Некоторые проекты JBoss включают в себя плагины Maven. Чтобы они были доступны, нужно в settings.xml добавить следующие строки:
<pluginGroups> <!-- pluginGroup | Specifies a further group identifier to use for plugin lookup. | --> <pluginGroup>org.jboss.maven.plugins</pluginGroup> </pluginGroups>
Полный пример settings.xml
Полный пример файла settings.xml, настроенного на работу с репозиториями JBoss есть в JBoss Wiki: Maven Settings Example – Users.
Репозиторий JBoss для разработчиков артефактов JBoss
Если вы попытаетесь самостоятельно собрать какой-либо из проектов JBoss, то POM этого проекта может уже содержать все необходимые URLы репозиториев. Если это не так, то вам необходимо добавить URL группы “public” в ваш settings.xml. Эта группа содержит как проекты JBoss так и сторонние (thirdparty) репозитории, которые содержат артифакты, необходимые для сборки проектов JBoss. Вот URL “public” группы в репозитории JBoss:
http://repository.jboss.org/nexus/content/groups/public/
Так может выглядеть настройка репозитория “public” в POM или settings.xml.
<repositories> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>jboss-public-repository-group</id> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>
Если вы собираете старую версию проекта, вам, возможно, понадобится подключить deprecated репозиторий.
Содержимое репозитория JBoss Deprecated
Есть несколько типов артефактов, которые в настоящее время находятся в репозитории устаревших артефактов JBoss Deprecated.
- Артефакты, которые соответствуют GAV (GroupId, ArtifactId, Version) центрального репозитория (central)б но содержат разные jar или pom.
- Артефакты, которые соответствуют артефактам в центральном репозитории, но у которых другой GAV.
- Некторые старые groupIds jboss, которые больше не используются.
В этой таблице содержится информация о том, как заменить устаревшие артефакты.
| Deprecated Artifact GAV | Correct Artifact GAV |
| apache-log4j:log4j | log4j:log4j |
|
apache-xerces:xml-apis:2.9.1, apache-xerces:xml-apis:2.9.0 |
xml-apis:xml-apis:1.3.04 |
| apache-xerces:xml-apis:2.7.0 | xml-apis:xml-apis:1.3.02 |
| apache-xerces:resolver:2.9.1 | xml-resolver:xml-resolver:1.2 |
| apache-xerces:xercesImpl:2.9.1 | xerces:xercesImpl:2.9.1 |
| sun-jaxws:jaxws-rt:2.1.3 | com.sun.xml.ws:jaxws-rt:2.1.3 |
| sun-jaxws:jsr173-api:2.1.1 | javax.xml.stream:stax-api:1.0-2 |
| sun-jaxws:jsr181-api:2.1.1 | javax.jws:jsr181-api:1.0-MR1 |
| sun-jaxws:jaxws-tools:2.1.3 | com.sun.xml.ws:javaxws-tools:2.1.3 |
| sun-jaxws:jaxws-api:2.1.1 | javax.xml.ws:jaxws-api:2.1-1 |
| quartz:quartz:1.6.0 | opensymphony:quartz:1.6.0 |
| apache-avalon-logkit:logkit:1.2 | logkit:logkit:1.2 |
|
apache-scout:scout:1.1.1 |
org.apache.ws.scout:scout:1.1.1 |
| org.apache.ws.plicy:wscommons-policy:1.0 | ws-commons:policy:1.0 |
| apache-httpclient:commons-httpclient:3.1 | commons-httpclient:commons-httpclient:3.1 |
| trove:trove:2.1.1 | trove:trove:1.0.2 |
| wutka-dtdparser/dtdparser121/1.2.1 | com.wutka:dtdparser:1.21 |
Чтобы подключить репозиторий JBoss Deprecated, необходимо добавить в settings.xml следующий профиль.
<profile> <id>jboss-deprecated</id> <repositories> <repository> <id>jboss-deprecated</id> <name>JBoss Deprecated</name> <url>https://repository.jboss.org/nexus/content/repositories/deprecated/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </profile>
Legacy Maven Repository
С апреля 2010 года JBoss Community больше не использует старый репозиторий
http://repository.jboss.org/maven2/
Однако, этот URL будет оставаться доступным еще неопределенное количество времени для совместимости со старыми проектами.
Источники информации
Эта статья является компиляцией из четырех статей, которые есть в JBoss Wiki.



#1 by Sergey Kiselev on 26 Август 2010 - 3:14
Quote
Еще можно посмотреть вебинар от JBoss: Maven Repository Magic – http://www.vimeo.com/12620367
p/s
Тут еще вебинары – http://jboss.org/webinars
#2 by Дмитрий Леонтьев on 26 Август 2010 - 8:56
Quote
Спасибо, Sergey! JBoss: Maven Repository Magic посмотрел, остальные вебинары буду смотреть. Актуальная тема для меня сейчас.
#3 by Sergey Kiselev on 2 Сентябрь 2010 - 8:09
Quote
Кстати, все бы хорошо, но обычно локально ставят proxy-репозиторий, и он уже забирает все артифакты у jboss. Я предпочитаю nexus, archiva меня не впечатлила
#4 by Дмитрий Леонтьев on 13 Сентябрь 2010 - 14:14
Quote
Про прокси-репозитории слышал, немного разбирался с archiva по книге “Apache Maven 2 Effective Implementation”. Nexus пока не затрагивал, да и вообще до сего момента не приходилось сталкиваться с этими технологиями в реальной практике. На предыдущей работе использовали Maven, но с прокси ни кто не стал разбираться. Сейчас вот на новую устраиваюсь, может там с этим столкнусь
#5 by noname on 20 Сентябрь 2010 - 13:31
Quote
IMHO, использовать Maven следует только с Repository Manager ( Archiva, Artifactory или Nexus ).
Плюсы:
1. Корпоративный репозитарий библиотек. Если тебе надо подцепить либу товарища, просто прописываешь ее как обычную зависимость.
Как у вас это происходит сейчас, мне даже страшно представить… Создаете папочку lib и туда кидаете все? Недалеко от Ant ушли.
2. Нет нужды прописывать все репозитарии каждому на своем компьютере. И синхронизировать между разработчиками эти записи. Все прописывается в Nexus один раз и потом при необходимости дополняется.
3. Контроль зависимостей. Чтобы люди не пихали в продакшн снепшоты, беты и альфы.
Если вы используете SVN, то с плагином Maven Release Plugin релиз превращается в пару команд. Как у него с другими VCS я не проверял, к сожалению.