Google Code项目的Maven存储库

jqn*_*qno 22 maven-2 google-code

我正在Google Code上托管一个小型开源项目,并且我被要求将jar提交到可公开访问的Maven存储库.我几乎没有Maven的实际知识.最好的方法是什么?

我可以提交一些中央存储库,还是可以自己托管?当我想发布一个新版本的jar时,我需要做什么?

我一直在谷歌搜索,发现看起来很简单,但似乎有点......与Maven的精神相反,将jar文件提交给SVN :).

此外,还有一种方法可以像Google Code一样跟踪下载次数吗?

编辑

我一直在得到一些答案,其中一些包含有关添加到我的内容的提示pom.xml.多谢你们!但显然我忘记提到一件重要的事情:我的构建脚本是在ANT中,说白了,我打算保持这种方式:).我只是想让Maven用户更容易将我的jar包含在他们的项目中.


我最终采用的解决方案

最后,我确实使用了之前引用的解决方案,我只是将一个Maven repo提交给SVN.我有ANT脚本调用Maven来设置本地仓库,然后调用SVN将其提交给Google Code.对于那些有兴趣:看我的构建脚本在这里,在publish-maven目标.

Ric*_*ler 24

中央存储库有一个指南,其中有一个关于上传可能有用的项目的部分.如果没有别的,您可以检查项目的命名约定和最低信息要求.

Sonatype也做OSS Repository托管,详见其指南.

更新:我不是说你应该改变你的构建过程 - 如果Ant适合你的话.无论您的构建方法如何,都值得遵循POM中的Maven约定.将jar放入Maven存储库的目的是让Maven用户可以访问它,因此您需要为已发布的工件定义POM.遵循命名约定将有助于您的用户,以便您可以这样做.例如,将SCM详细信息添加到pom(以及其他内容)将允许您的用户使用Maven的IDE集成将项目导入其工作区.

基本上,您有4个选择:

  1. 针对Maven存储库执行标准Maven构建(已经排除)
  2. 设置Maven存储库,使用Ant进行构建,并使用Maven部署jar和POM.
  3. 设置Maven存储库,广告使用Ant HTTP任务来发布工件
  4. 使用Subversion"存储库",并使用SvnAnt任务发布工件

选项1

使用Maven构建和部署工件(有关详细信息,请参阅Maven书和上述链接).


选项2

假设您有一个创建jar的构建过程,并且您已经定义了POM,最好的办法是将其发布到Sonatype OSS存储库,如上所述.

使用Maven部署插件的部署文件目标,将现有jar部署到标准Maven存储库非常简单:

  1. 设置存储库(例如,通过引发Jira请求在Sonatype服务器上)
  2. 使用Ant构建jar.
  3. 如果已定义POM,请将其放在与jar相同的目录中.
  4. 运行部署文件目标:

    mvn deploy:deploy-file -Durl = http:// path/to/your/repository\-DrepositoryId = some.id\-Dfile = path-to-your-artifact-jar\-DomomFile = path-to-your-的pom.xml

请注意,Maven部署目标将自动将pom.xml转换为[project-name] - [version] .pom.如果您正在执行其他两个备选方案中的任何一个,则需要确保使用最终名称提交POM,即[project-name] - [version] .pom.您还需要确保按照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
Run Code Online (Sandbox Code Playgroud)

选项3

如果要使用Ant部署到Maven存储库,可以使用Ant HTTP库(注意我自己没有尝试过).你将组成两个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>
Run Code Online (Sandbox Code Playgroud)

选项4

如果要完全避免使用Maven并使用Ant部署到SVN支持的存储库,则可以使用SvnAnt Subversion库.您只需要配置Svn导入任务即可将工件添加到Remote Subversion存储库.

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository"
    message="release"/>
Run Code Online (Sandbox Code Playgroud)


Wil*_*ger 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>
Run Code Online (Sandbox Code Playgroud)

接下来,您需要使用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>
Run Code Online (Sandbox Code Playgroud)