Репозиторий Maven для проекта Google Code

Я размещаю небольшой проект с открытым исходным кодом в коде Google, и меня попросили отправить jar в общедоступный репозиторий Maven. Я практически ничего не знаю о Maven. Как лучше всего это сделать?

есть ли какой-то центральный репозиторий, который я могу отправить, или я могу разместить свой собственный? Что мне нужно сделать, когда я хочу выпустить новую версию jar?

я гуглил и нашел этой, который выглядит красиво и просто, но кажется немного ... вопреки духу Maven, для фиксации файлов jar в SVN :).

кроме того, будет ли способ по-прежнему отслеживать количество загрузок, как это делает код Google?

редактировать

Я получаю некоторые ответы, некоторые из которых содержат подсказки о том, что добавить к моему pom.xml. Спасибо, ребята! Но, очевидно, я забыл упомянуть одну важную вещь: мой сценарий сборки находится в ANT, и, грубо говоря, я намерен сохранить его путь.): Я просто хочу, чтобы пользователям Maven было проще включать мою банку в свои проекты.


решение, с которым я пошел в конце

в конце концов, я использовал решение I ссылка раньше, где я просто совершаю Maven-РЕПО в SVN. У меня есть скрипт ANT call Maven для настройки локального РЕПО, а затем вызовите SVN, чтобы зафиксировать его в коде Google. Для интересующихся: посмотрите на мой скрипт сборки здесь, в publish-maven цель.

4 ответов


есть руководство по Центральному хранилищу у этого есть раздел о загрузке проектов, которые могут помочь. Если ничего другого вы не можете проверить соглашения об именах и минимальные требования к информации для вашего проекта.

Sonatype также делает хостинг репозитория OSS, см. их руководство для сведения.

Update: я не говорю, что вы должны изменить свой процесс сборки - если Ant работает для вас, придерживайтесь его. Стоит следовать конвенциям Maven в вашем POM независимо от вашего метода сборки. Поскольку цель размещения jar в репозитории Maven-сделать его доступным для пользователей Maven, вам нужно будет определить POM для опубликованного артефакта. Соблюдение соглашений об именах поможет вашим пользователям, поэтому вы можете это сделать. Например, добавление деталей SCM в pom (среди прочего) позволит вашим пользователям импортировать проект в свою рабочую область с помощью интеграции IDE для Maven.

в принципе, вы есть 4 варианта:

  1. выполните стандартную сборку Maven против репозитория Maven (уже исключено)
  2. настройте репозиторий Maven, выполните сборки с помощью Ant и используйте Maven для развертывания jar и POM.
  3. настройте репозиторий Maven, ad используйте HTTP-задачу Ant для публикации артефактов
  4. используйте Subversion "репозиторий" и используйте задачу SvnAnt для публикации артефактов

1

используйте Maven для создания и развертывания артефактов (см. Maven книга и вышеуказанные ссылки для деталей).


2

предполагая, что у вас есть процесс сборки, который создает ваш jar, и вы определили POM, лучше всего опубликовать его в репозитории Sonatype OSS, как указано выше.

развертывание существующего jar в стандартный репозиторий Maven просто с помощью файла развертывания плагина Maven deploy гол:

  1. настройка репозитория (e.g на серверах Sonatype, подняв запрос Jira)
  2. создайте свою банку с Ant.
  3. если вы определили POM, поместите его в тот же каталог, что и jar.
  4. запустите цель deploy-file:

    mvn deploy:deploy-file-Durl=http://path/to/your/repository\ - DrepositoryId=некоторые.id \ Единственный способ иметь установленный=путь-к-ваш-артефакт-фляга \ -DpomFile=путь-к-Ваш-пом.в XML

обратите внимание, что цель развертывания Maven автоматически переведет pom.XML в [имя проекта]-[версия].ПФЛ. Если вы делаете любой из двух других вариантов, вам нужно будет убедиться, что вы зафиксируете POM с окончательным именем, т. е. [project-name]-[version].ПФЛ. Вам также необходимо убедиться, что вы составляете относительные пути для артефактов, следующих за Maven конвенции.

например. для groupId=com.foo.bar, artifactId=my-project version=1.0.0, путь к файлам будет:

/com/foo/bar/my-project/my-project-1.0.0.jar
/com/foo/bar/my-project/my-project-1.0.0.pom

3

Если вы хотите использовать Ant для развертывания в репозитории Maven, вы можете использовать Ant HTTP library (обратите внимание, я не пробовал это сам) . Вы составите две задачи HTTP put, одну для jar и одну для POM.

<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom">
  <userCredentials username="user" password="password"/>
</httpput>
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar">
  <userCredentials username="user" password="password"/>
</httpput>

4

Если вы хотите полностью избежать Maven и использовать Ant для развертывания в репозитории с поддержкой SVN, вы можете использовать SvnAnt подрывной библиотека. вам просто нужно будет настроить импорт Svn задача добавления артефактов в удаленный репозиторий Subversion.

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository"
    message="release"/>

проверить вагон-svn. Это позволит вам "развернуть" в репозитории Subversion. Это немного запутанно, но все же лучше, чем ничего. Я знаю несколько проектов, которые используют его в java.net, и я также наткнулся на некоторые проекты, использующие его в code.google.com.

Если вы хотите использовать его, то вам сначала нужно загрузить wagon-svn в качестве расширения:

  <build>
    ...
    <extensions>
      <extension>
        <groupId>org.jvnet.wagon-svn</groupId>
        <artifactId>wagon-svn</artifactId>
        <version>...</version>
      </extension>
    </extensions>

затем вам нужно установить цели развертывания с помощью идентификатора svn: protocol. Вот пример я скопировал из Интернет.

<distributionManagement>
    <repository>
        <id>maven-config-processor-plugin-repo-releases</id>
        <name>Maven Repository for Config Processor Plugin (releases)</name>
        <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/releases</url>
        <uniqueVersion>false</uniqueVersion>
    </repository>
    <snapshotRepository>
        <id>maven-config-processor-plugin-repo-releases</id>
        <name>Maven Repository for Config Processor Plugin (snapshots)</name>
        <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/snapshots</url>
        <uniqueVersion>false</uniqueVersion>
    </snapshotRepository>
</distributionManagement>

проверьте, поддерживает ли репозиторий Maven Maven развернуть плагин. Это был бы самый простой подход.

большинство репозиториев использует ssh в качестве транспорта. См.этой для сведения.

после его установки, все что вам нужно сделать, это:

  mvn deploy:deploy

вы можете отправить свою банку в https://clojars.org/

в своем pom.xml:

<repositories>
  <repository>
    <id>clojars.org</id>
    <url>http://clojars.org/repo</url>
  </repository>
</repositories>