我正在Google Code上托管一个小型开源项目,并且我被要求将jar提交到可公开访问的Maven存储库。我几乎没有Maven的实际知识。最好的方法是什么?
我可以提交一些中央存储库,还是可以托管我自己的存储库?当我想发布一个新版本的jar时,我需要做什么?
我一直在谷歌搜索并发现this,看起来很简单,但似乎有点......与Maven的精神相反,将jar文件提交给SVN :)。
此外,还有一种方法可以跟踪谷歌代码的下载次数吗?
修改
我一直在得到一些答案,其中一些答案包含有关添加到pom.xml
的内容的提示。多谢你们!但显然我忘记提到一件重要的事情:我的构建脚本是在ANT中,说得直白,我打算保持这种方式:)。我只是想让Maven用户更容易将我的jar包含在他们的项目中。
我最终采用的解决方案
最后,我之前使用过解决方案I referenced,我只是将一个Maven repo提交给SVN。我有ANT脚本调用Maven来设置本地仓库,然后调用SVN将其提交给Google Code。对于那些感兴趣的人:在publish-maven
目标中查看我的构建脚本here。
答案 0 :(得分:24)
有一个guide to the central repository有一个关于上传可能有用的项目的部分。如果没有别的,您可以检查命名约定和对项目的最低信息要求。
Sonatype也会执行OSS存储库托管,有关详细信息,请参阅their guide。
更新:我不是说你应该改变你的构建过程 - 如果Ant适合你的话。无论您的构建方法如何,都值得遵循POM中的Maven约定。将jar放入Maven存储库的目的是让Maven用户可以访问它,因此您需要为已发布的工件定义POM。遵循命名约定将有助于您的用户,以便您可以这样做。例如,将SCM细节添加到pom(以及其他内容)将允许您的用户使用Maven的IDE集成将项目导入其工作区。
基本上,您有4个选项:
选项1
使用Maven构建和部署工件(有关详细信息,请参阅Maven book和上述链接)。
选项2
假设您有一个创建jar的构建过程,并且您已经定义了POM,最好的办法是将其发布到Sonatype OSS存储库中。
使用Maven部署插件的部署文件目标,将现有jar部署到标准Maven存储库很简单:
运行部署文件目标:
mvn deploy:deploy-file -Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -Dfile =路径到你的工具罐子\ -DpomFile =路径到您的-的pom.xml
请注意,Maven部署目标会自动将pom.xml转换为[project-name] - [version] .pom。如果您正在执行其他两个备选方案中的任何一个,则需要确保使用最终名称提交POM,即[project-name] - [version] .pom。您还需要确保按照Maven约定编写工件的相对路径。
E.g。对于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 Subversion library。您只需要配置Svn import任务即可将工件添加到Remote Subversion存储库。
<import path ="/dir/containing/the/jar/and/pom"
url="svn://your/svn/repository"
message="release"/>
答案 1 :(得分:7)
检查旅行车-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>
答案 2 :(得分:1)
检查Maven存储库是否支持maven deploy plugin。这将是最简单的方法。
大多数存储库使用ssh作为传输。有关详细信息,请参阅this。
一旦设置完毕,您所要做的就是:
mvn deploy:deploy
答案 3 :(得分:0)
您可以将jar提交至https://clojars.org/
在pom.xml
:
<repositories>
<repository>
<id>clojars.org</id>
<url>http://clojars.org/repo</url>
</repository>
</repositories>