BastenGao's Blog - Web, Rails, Ruby, Java

利用 GitHub 托管 Maven 库


maven github 写于2013-03-16, 最后修改 2013-03-18 22:38

Maven 仓库托管方式

  • OSSRH (OSS Repository Hosting Service)

    如果你的项目是开源项目,且希望能够被同步到 Maven 中央库,可以使用这种方式

  • SonaType Nexus

    可以使用SonaType Nexus 搭建自己的 Maven 仓库,比较适合公司内部的商业项目

  • 静态 Maven 仓库

    使用手动组织 Maven 仓库的方式,并且提供http(s)访问


这里主要讲如何利用 GitHub结合静态 Maven 仓库的做法。

比如有 Maven 项目mvn-example,同时有 GitHub repository mvn-repository,目录结构如下

.
\__ mvn-example
        \__ src
        \__ pom.xml

\__ mvn-repository
        \__ releases
        \__ snapshots

releases 目录放稳定版本的构件,snapshots 目录放快照版本的构件。

两中方式將构件部署(deploy)到 mvn-repository

  • xml 中配置 distributionManage

    修改 mvn-example/pom.xml, 添加下面配置

      <distributionManagement>
        <repository>
          <id>my-maven-repository</id>
          <name>Internal Repository</name>
          <url>${project.basedir}../mvn-repository/releases</url>
        </repository>
      </distributionManagement>
    

    然后执行命令

      cd mvn-example
      mvn deploy
    

    或者嫌配置太多,直接输下面命令

  • 直接命令参数

      cd mvn-example
      mvn -DaltDeploymentRepository=snapshot-repo::default::file:../mvn-repository/releases clean deploy
    

如果想加入source与api,可在 clean 命令后跟上 source:jar javadoc:jar。 deploy 完成后, push 到 github

cd mvn-repository
git add releases
git commit -m "add mvn-example"
git push origin master

然后可以在其他依赖 mvn-example 的项目通过下面配置引用

<repositories>
    <repository>
        <id>your-mvn-repository</id>
        <url>https://raw.github.com/yourGitHubId/mvn-repository/master/releases</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>yourGroupId</groupId>
        <artifactId>mvn-example</artifactId>
        <version>${version}</version>
    </dependency>
    <!-- ... -->
</dependencies>

参见示例

参考:

comments powered by Disqus