如何使用 Bitbucket 作为 Maven 远程存储库?
Posted
技术标签:
【中文标题】如何使用 Bitbucket 作为 Maven 远程存储库?【英文标题】:How to use Bitbucket as a maven remote repository? 【发布时间】:2013-09-22 10:33:32 【问题描述】:我们计划使用 bitbucket 作为源代码存储库以及基于 maven 的项目的远程存储库。我在 bitbucket 上创建了一个存储库,如下所示:
https://bitbucket.org/mycompany/maven-repository
如何使用项目特定的 pom.xml 将我公司特定的项目 jar 推送到上述远程存储库中?你能帮我一个示例 pom.xml 吗?我们会将所有公司特定的 jar 推送到上述远程存储库中,以供公司内的其他项目作为 maven 依赖项使用。
到目前为止,我一直在尝试将一个示例项目推送到远程仓库:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>corporate-pom</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<distributionManagement>
<repository>
<id>MyCompanyRepo</id>
<url>https://bitbucket.org/mycompany/maven-repository</url>
</repository>
</distributionManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</pluginManagement>
</build>
以上是一个父 pom,将包含在公司内的所有其他项目中,我想将其推送到远程 repo 以供其他公司特定项目使用。
当我运行 mvn deploy 命令时,这是我得到的错误:
C:\Cooler\Work\dev\Projects\mycompany\wal-common>mvn deploy
[WARNING]
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Unrecognised tag: 'snapshotPolicy' (position: START_TAG seen ...</layo
ut>\n <snapshotPolicy>... @203:27) @ C:\Users\cooler\.m2\settings.xml,
line 203, column 27
[WARNING]
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building corporate-pom 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ corporate-pom
---
[INFO] Installing C:\Cooler\Work\dev\Projects\mycompany\wal-common\pom.xml to C:\
Users\cooler\.m2\repository\com\mycompany\corporate-pom\1.0\corporat
e-pom-1.0.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ corporate-pom ---
Uploading: https://bitbucket.org/mycompany/maven-repository/com/mycompany/corporate- pom/1.0/corporate-pom-1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.607s
[INFO] Finished at: Tue Sep 17 14:33:01 MST 2013
[INFO] Final Memory: 7M/122M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:
deploy (default-deploy) on project corporate-pom: Failed to deploy artifacts: Co
uld not transfer artifact com.mycompany:corporate-pom:pom:1.0 from/
to CompanyREPO (https://bitbucket.org/mycompany/maven-repository): Connection to h
ttp://:8080 refused: Connection refused: connect -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
感谢您的帮助。
【问题讨论】:
【参考方案1】:你可以试试http://synergian.github.io/wagon-git/index.html它有bitbucket的说明。
使用 bitbucket 的另一种方法是使用公司的保管箱文件夹。 https://code.google.com/p/peter-lavalle/wiki/MavenOnDropBox 包含关于如何执行此操作的非常好的分步指南。
【讨论】:
+1 用于协同,非常容易设置;如果您已经使用 git,我无法想象有更快的方法来设置 maven 存储库。【参考方案2】:在本地 maven 存储库中安装 jars。
创建一个目录,例如maven-repo/存储库
cd 进入 maven-repo
执行以下操作(将参数替换为与您的 jar 相关的参数):
mvn install:install-file -DgroupId=com.rapid_i -DartifactId=rapidminer -Dversion=5.3.006 -Dfile=/path/to/artifact/rapidminer.jar -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=./repository -DcreateChecksum=true
将文件夹共享到 BitBucket 公共存储库。
在您的 pom.xml 中创建一个指向您的 bitbucket 文件夹的存储库。(您必须在路径 https://bitbucket.org/your-user-or-group/your_maven-repo/raw/master/ 中使用 /raw/master !!)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.activeintel</groupId>
<artifactId>rapidminer-proj</artifactId>
<version>0.0.1</version>
<!-- Dependency to jar on Maven Repository on Git-BitBucket -->
<dependencies>
<dependency>
<groupId>com.rapid_i</groupId>
<artifactId>rapidminer</artifactId>
<version>5.3.006</version>
</dependency>
</dependencies>
<!-- Maven Repository on Git-BitBucket -->
<repositories>
<repository>
<id>neil_rubens-repository</id>
<url>https://bitbucket.org/your-user-or-group/your_maven-repo/raw/master/repository/</url>
</repository>
</repositories>
</project>
来源:Hosting Maven Repository for third-party jars on Git (Bitbucket/Github)
【讨论】:
请注意,不鼓励link-only answers,因此答案应该是搜索解决方案的终点(与另一个参考文献的中途停留相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。 我认为这可能是最好的,@kleopatra 女士,我认为上面的最佳答案需要您注意该评论.. :)【参考方案3】:如何将我公司特定的项目 jar 推送到上述遥控器中 使用项目特定 pom.xml 的存储库?
你不能。在我看来不应该。
Bitbucket 不是maven repository。试图让 maven 将工件部署到 BitBucket 这样做是错误的 可能违反了 Atlassian 的使用条款。另一方面,它可能没问题。
您需要改为部署到您自己的本地存储库或公共存储库。
【讨论】:
我认为这是不正确的。人们显然已经这样做了(like this guy),正如 ams 所说,wagon-git 旨在做到这一点。 感谢@BigMikeW,我不知道像 wagon-git 这样的包装插件会这样做 - 一个有趣的概念。鉴于此,我将更新我的答案。我确实想知道 Atlassian 如何根据其使用条款政策对这种使用进行分类 - 特别是 section 3.5。我不会这样做,但嘿,如果它有效,它就有效。 它们似乎意味着该部分中没有多媒体文件托管。我知道有关于如何从 Bitbucket 托管静态网站的说明,如果您查看 this defect,他们不会在 cmets 中对此提出异议。 wagon-git 是一个通用的 git wagon,不仅仅适用于 Bitbucket 或 Github。无论如何,我要添加一些免责声明。谢谢。 @mounds 你认为我可以从 Gradle 引用 Maven repository hosted in Stash 吗?【参考方案4】:我现在已经设法让它工作了。我关注了these instructions,我可以将工件部署到 bitbucket,然后在另一个 maven 项目中使用它们。
为了让它工作,我必须做的调整是:
-
将 Wagon-Git 升级到 v0.2.0
使用 git config --global user.email 配置 Git,因为它似乎没有使用我之前使用的 --local 设置
我还手动将 README.md 添加到 repo,但我认为这实际上不是必需的。
成功部署到存储库后,您应该可以通过 BitBucket Web 前端以常规方式查看所有文件。
【讨论】:
您的“这些说明”链接已失效! :( 你是对的@Abby。抱歉,我没有复制它们! 我正在尝试使用Stash (now named Bitbucket Server) 设置一个内部存储库。有人成功了吗?以上是关于如何使用 Bitbucket 作为 Maven 远程存储库?的主要内容,如果未能解决你的问题,请参考以下文章
将项目从 bitbucket 导入到本地 maven 存储库