Репозиторий 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 варианта:
- выполните стандартную сборку Maven против репозитория Maven (уже исключено)
- настройте репозиторий Maven, выполните сборки с помощью Ant и используйте Maven для развертывания jar и POM.
- настройте репозиторий Maven, ad используйте HTTP-задачу Ant для публикации артефактов
- используйте Subversion "репозиторий" и используйте задачу SvnAnt для публикации артефактов
1
используйте Maven для создания и развертывания артефактов (см. Maven книга и вышеуказанные ссылки для деталей).
2
предполагая, что у вас есть процесс сборки, который создает ваш jar, и вы определили POM, лучше всего опубликовать его в репозитории Sonatype OSS, как указано выше.
развертывание существующего jar в стандартный репозиторий Maven просто с помощью файла развертывания плагина Maven deploy гол:
- настройка репозитория (e.g на серверах Sonatype, подняв запрос Jira)
- создайте свою банку с Ant.
- если вы определили POM, поместите его в тот же каталог, что и jar.
-
запустите цель 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>