如何使用 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 存储库

将项目从bitbucket导入到本地maven存储库

如何使用 Bitbucket 管道构建依赖项目

如何使用 Jenkins 部署 Spring Boot Maven 应用程序?

带有 docker 容器的 bitbucket 管道

如何在 bitbucket 中创建发行说明?