【问题标题】:How do I deploy just the sources jar from a maven project?如何仅部署 Maven 项目中的源 jar?
【发布时间】:2011-06-03 15:16:42
【问题描述】:

我们在没有附加源 jar 的情况下向我们的 nexus 存储库发布了许多版本。我想回填这些版本的源 jar。

我试图做的是

  1. 签出我要为其上传源的标记版本
  2. 使用 attach-sources sn-p 更新 pom
  3. 做一个 Maven 部署

由于 pom 和工件 jar 已经在存储库中,因此失败并显示 400 错误代码。

有没有办法只上传源jar?

【问题讨论】:

  • 能否删除/重命名旧版本并重试?为什么不发布一个带有源代码的新版本? (从技术上讲,它与源代码不同)
  • 我没有权限。发布新版本似乎不优雅。我不认为这是一个不同的版本。

标签: java maven maven-deploy-plugin


【解决方案1】:

您应该能够使用 maven deploy-file 来执行此操作(这还具有生成各种文件总和的额外好处),详细信息 here(除其他外,您将使用“packaging=jar”和“分类器=来源”)。

【讨论】:

  • 不应该是“classifier=sources”(复数)吗?
  • 这对我有用。年轻玩家的一个陷阱似乎是这个目标的“repositoryId”参数需要设置为您的 settings.xml 中的 条目的 ID,而不是您可能认为的存储库的 ID。
  • 这实际上有效。这有点令人困惑,因为还必须指定实际的工件文件。但是,当指定classifier=source 时,首先上传-Dsources=artifact-source.jar 文件。然后出现400错误,但是文件上传了。 -Dclassifier=javadoc 也是如此。
【解决方案2】:

我认为最简单的方法是使用“curl”上传源 jar。您甚至不需要为此进行任何更改。

【讨论】:

  • 这个。您将花费更多时间来摆弄 Maven 及其文档,而不是值得。只需手动上传源 jar。哎呀,如果您可以访问,SCP 也可以正常工作。
  • 我很想将其标记为答案,但我不确定 curl 命令应该是什么。
  • @Caoilte 尝试curl --data-binary @target/yourpackage-version-sources.jar <url to post to> 发布到的网址取决于您的存储库。它可能是 http 或 ftp。如果存储库不喜欢默认代理,您可能需要提供 curl -A 标志。您将需要进行一些试验和错误。做man curl。这将在 Linux 上运行。在 Windows 上,您将需要 cygwin 或使用其他工具。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 2017-02-02
  • 2014-05-22
  • 1970-01-01
  • 2011-12-06
  • 2016-10-30
  • 2021-09-03
相关资源
最近更新 更多