В этой статье описывается как настроить 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. MavenSettings
  2. Maven Repository
  3. Maven Getting Started
  4. JBoss Deprecated Repository