在github上托管Maven存储库
我有一个小型开源库的分支,我正在github上工作。我想通过maven将其提供给其他开发人员,但我不想运行自己的Nexus服务器,因为它是一个fork,所以我无法轻松地将其部署到oss.sonatype.org在github上托管Maven存储库,maven,github,github-pages,mvn-repo,Maven,Github,Github Pages,Mvn Repo,我有一个小型开源库的分支,我正在github上工作。我想通过maven将其提供给其他开发人员,但我不想运行自己的Nexus服务器,因为它是一个fork,所以我无法轻松地将其部署到oss.sonatype.org 我想做的是将它部署到github,以便其他人可以使用maven访问它。最好的方法是什么?我能找到的最佳解决方案包括以下步骤: 创建一个名为mvn repo的分支来托管maven工件 使用github将工件推送到github 将maven配置为将远程mvn repo用作maven存储库 使
我想做的是将它部署到github,以便其他人可以使用maven访问它。最好的方法是什么?我能找到的最佳解决方案包括以下步骤:
mvn repo
的分支来托管maven工件mvn repo
用作maven存储库- Maven工件在一个名为
的单独分支中与源代码分开保存,就像github页面在一个名为mvn repo
的单独分支中保存一样(如果使用github页面)gh pages
- 与其他建议的解决方案不同,如果您正在使用它们,它不会与您的
冲突gh页面
- 自然地与部署目标绑定,因此没有新的maven命令需要学习。只需像平常一样使用
mvn部署
mvn deploy
,因此,让我们为该解决方案修补该机制
首先,告诉maven将工件部署到目标目录中的临时暂存位置。将此添加到您的pom.xml
:
内部回购
临时暂存存储库
文件://${project.build.directory}/mvn repo
maven部署插件
2.8.1
internal.repo::default::file://${project.build.directory}/mvn repo
现在尝试运行mvn clean deploy
。您将看到它将您的maven存储库部署到target/mvn repo
。下一步是让它将该目录上传到GitHub
将身份验证信息添加到~/.m2/settings.xml
,以便github站点maven插件可以推送到github:
github
您的用户名
你的密码
(如前所述,请确保chmod 700 settings.xml
以确保没有人可以读取文件中的密码。如果有人知道如何让site maven插件提示输入密码,而不是在配置文件中要求输入密码,请告诉我。)
然后通过将以下内容添加到pom中,告诉GitHubsite maven插件关于您刚刚配置的新服务器:
github
最后,配置site maven插件
,将临时暂存repo上传到Github上的mvn repo
分支:
com.github.github
SiteMaven插件
0.11
${project.version}的Maven工件
真的
${project.build.directory}/mvn repo
参考/主管/mvn回购
**/*
你的名字
您的-GITHUB-USERNAME
网站
部署
mvn回购
分支不需要存在,它将为您创建
现在再次运行mvn clean deploy
。您应该看到maven deploy plugin将文件“上载”到目标目录中的本地暂存存储库,然后site maven plugin提交这些文件并将其推送到服务器
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building DaoCore 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
[INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ greendao ---
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.jar (77 KB at 2936.9 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.pom (3 KB at 1402.3 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/maven-metadata.xml (768 B at 150.0 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/maven-metadata.xml (282 B at 91.8 KB/sec)
[INFO]
[INFO] --- site-maven-plugin:0.7:site (default) @ greendao ---
[INFO] Creating 24 blobs
[INFO] Creating tree with 25 blob entries
[INFO] Creating commit with SHA-1: 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] Updating reference refs/heads/mvn-repo from ab7afb9a228bf33d9e04db39d178f96a7a225593 to 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.595s
[INFO] Finished at: Sun Dec 23 11:23:03 MST 2012
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
在您的浏览器中访问github.com,选择mvn repo
分支,并验证您的所有二进制文件现在都在那里
祝贺你强>
现在,只需运行mvncleandeploy
,就可以将maven工件部署到穷人的公共repo
您还需要执行一个步骤,即配置任何依赖于您的pom的pom,以了解您的存储库在哪里。将以下代码段添加到依赖于您的项目的任何项目的pom中:
您的项目名称mvn repo
https://github.com/YOUR-USERNAME/YOUR-PROJECT-NAME/raw/mvn-repo/
真的
总是
现在,任何需要jar文件的项目都将自动从github maven存储库下载它们
编辑:为避免注释中提到的问题(“创建提交时出错:请求无效。对于“属性/名称”,nil不是字符串”),请确保在github上的配置文件中声明名称。另一种选择是使用任何支持webdav的web主机。当然,您需要一些空间来实现这一点,但它的设置非常简单,是运行完整的nexus服务器的好选择
将其添加到构建部分
<extensions>
<extension>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<groupId>org.apache.maven.wagon</groupId>
<version>2.2</version>
</extension>
</extensions>
大篷车
org.apache.maven.wagen
2.2
将类似的内容添加到distributionManagement部分
<repository>
<id>release.repo</id>
<url>dav:http://repo.jillesvangurp.com/releases/</url>
</repository>
发行回购
dav:http://repo.jillesvangurp.com/releases/
最后,确保在settings.xml中设置存储库访问权限
将此添加到服务器部分
<server>
<id>release.repo</id>
<username>xxxx</username>
<password>xxxx</password>
</server>
发行回购
xxxx
xxxx
以及存储库部分的定义
<repository>
<id>release.repo</id>
<url>http://repo.jillesvangurp.com/releases</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
发行回购
http://repo.jillesvangurp.com/releases
真的
假的
最后,如果您有任何标准的php托管,您可以使用类似sabredav的东西来添加webdav功能
mvn deploy -Dregistry=https://maven.pkg.github.com/yourusername -Dtoken=yor_token