Gradle 上传到底是如何工作的?

2023-12-12

我在理解 gradle 中创建和上传工件的所有部分如何组合在一起时遇到了一些实际问题。

我在此脚本中的意图很简单:我想下载源 tarball 和可能的一堆依赖项,运行“build.sh”shell 脚本,最终创建一个二进制 tarball 并让 gradle 脚本将其发布到工件存储库。

主要思想是我可以使用gradle的依赖管理、maven工件知识以及构建并行化和避免来控制构建脚本本身的执行,主要是为了管理我的一组第三方二进制依赖项...

以下脚本失败并出现 400 错误,我怀疑这是因为我没有将该工件与实际的输出文件链接起来。

正确且正确的做法是什么?

apply plugin: 'maven'

version 'testarch-4.2'

repositories {
  maven {
    url "http://nexus/..."
  }
}

configurations {
  sourceArchive
  binaryArchive
}

dependencies {
  sourceArchive "org.gnu:bash:4.2:src@tgz"
}

task buildFromSource(type: Exec) {
  inputs.files configurations.sourceArchive.files
  outputs.file file("${project.name}-${project.version}.tgz")
  executable './build.sh'
  def myArgs = configurations.sourceArchive.files.path
  myArgs.add(0, outputs.files.asPath)
  args myArgs
}

artifacts {
  // Is this really the only way to transform a singleton collection
  // into the singleton?
  //   def outputFile
  //   buildFromSource.outputs.files.each { outputFile = it }
  // Nope: this is better magic:
  def outputFile = buildFromSource.outputs.files.singleFile
  println outputFile.path
  binaryArchive file: outputFile, name: 'bash'
  // binaryArchive file: file(buildFromSource.outputs.files.asPath), name: 'bash'
}

uploadArchives {
  configuration = configurations.binaryArchive
  repositories.mavenDeployer {
    repository(url: "http://nexus/..") {
      authentication(userName: "me", password: "secret!")
    }
    pom.groupId = 'org.gnu'
  }
}

uploadArchives.dependsOn buildFromSource

我得到的错误是:

* What went wrong:
Execution failed for task ':uploadArchives'.
> Could not publish configuration 'binaryArchive'
   > Error deploying artifact 'org.gnu:bash:tgz': Error deploying artifact: Failed to transfer file: http://nexus/.../org/gnu/bash/testarch-4.2/bash-testarch-4.2.tgz. Return code is: 400

从评论更新,同样的错误 - 尝试访问 Nexus 日志以进行进一步调试。

来自 Nexus 的错误是“缺少实体”,请参阅:缺少对 Nexus 的 PUT 的请求实体响应


我的问题的根本原因是我正在使用空文件进行测试。 Nexus 不喜欢空文件。当我将内容放入其中时,Nexus 很高兴并且代码可以正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 上传到底是如何工作的? 的相关文章

随机推荐

  • 在keras中使用Conv3d将多个图像输入到同一个CNN

    我想使用 conv3d 将 8 张图像同时输入到同一个 CNN 结构中 我的CNN模型如下 def build sample frame height width channels classes model Sequential inpu
  • 弹性搜索,多个索引与一个索引以及不同数据集的类型?

    我有一个使用 MVC 模式开发的应用程序 我现在想索引它的多个模型 这意味着每个模型都有不同的数据结构 是使用多个索引 每个模型一个 还是每个模型在同一索引中使用一个类型更好 我认为这两种方式都需要不同的搜索查询 我刚刚开始做这个 如果数据
  • MVC HttpRequestValidationException 异常

    我正在编写 MVC 5 互联网应用程序 并且有一个关于HttpRequestValidationException例外 我之前在控制器中的代码如下 protected override void OnException ExceptionC
  • 使用 Socket.BeginAccept/EndAccept 进行多个连接

    与同步不同Accept BeginAccept不为新创建的连接提供套接字 EndAccept然而 它也会阻止未来的连接被接受 所以我编写了以下代码来允许多个 客户端 连接到我的服务器 serverSocket BeginAccept Acc
  • Angular 2 服务双向数据绑定

    我有一个salary service and a player component 如果服务中的工资变量更新 玩家组件中的视图是否也会更新 或者 Angular 2 中不是这样吗 当页面首次加载时 我在player component 视图
  • JNI 集成到 AOSP 构建中

    我需要通过添加一些自定义库来更改 设置 应用程序 但我在配置方面遇到问题 当我尝试调用 System loadLibrary mylibrary 时 我得到libraryPath data app lib com settings 1 fi
  • 使用 System.Transactions 时保存点的替代方案

    我如何使用来自的课程System Transactions命名空间以达到与我使用时类似的效果SqlTransaction Save 保存点 and SqlTransaction Rollback savePoint 使用这两种方法的效果是能
  • MySql 连接中的 Java ClassNotFoundException (java.sql.SQLType)

    我正在开发一个android应用程序 它连接到正在工作的mysql服务器 但现在出现java lang ClassNotFoundException错误 找不到类 java sql SQLType 我不知道发生了什么 我唯一改变的是mysq
  • 如何在电子邮件正文中添加图像

    我想在电子邮件正文中添加图像 我不想在电子邮件中附加图像 而是在电子邮件正文中添加图像 这个怎么做 我正在用这个 img src or img src 然后图像就这样显示 不幸的是 用意图来做到这一点是不可能的 例如 粗体文本显示在 Edi
  • 停止 Delphi Indy 线程而不必等待结束超时

    这是我第一次使用 Delphi 开发多线程应用程序 所以一切对我来说仍然很新鲜 但我读了很多书 我的线程很简单 简而言之 我只是使用 Indy IdHTTP 来获取网页的内容 然后验证内容是否包含字符串 这里没有问题 现在 为了终止线程 我
  • AlarmManager 在模拟器中触发,但不在物理设备上触发

    我有一个调用 AlarmManager 的应用程序 Intent intent intent new Intent context MyEventReceiver class PendingIntent appIntent PendingI
  • 在Android中维护标准应用程序Activity返回堆栈状态(使用singleTask启动模式)

    我无法找到如何维护开发中的 Android 应用程序的状态 只是为了澄清 我不是在谈论维护活动状态 即跟踪特定活动的文本框值 复选框等 比方说 我的应用程序有两个活动A and B 当我启动我的应用程序时 它会带我进行活动A 然后按下按钮即
  • 使用多个合约运行 WCF ServiceHost

    使用单个合约运行 ServiceHost 工作正常 如下所示 servicehost new ServiceHost typeof MyService1 servicehost AddServiceEndpoint typeof IMySe
  • 付款 - IAP 或第三方

    我们正在开发一个 iOS 应用程序 该应用程序提供一些可在应用程序内使用的积分 付费 我们对此几乎没有疑问 我们可以使用 Paypal 或类似的第三方支付网关吗 或者我们需要为此实施 IAP 如果需要实施IAP 那么分成比例是多少 如果我们
  • 在 BlackBerry sim 上使用“;deviceside=true”执行 browserfield 时出现问题

    我正在尝试使用中给出的示例代码Apress 高级黑莓开发书 问题是当我使用 MDS 启动模拟器时 会显示网页 但是当我将 deviceside true 附加到url 然后启动没有MDS的模拟器时 网页不会显示 仅显示白色屏幕 import
  • 在 eclipse 中使用 Ant 调试 TestNg java 代码

    我正在尝试在 Eclipse Mars 中调试一个项目 该项目使用 TestNg 和 Apache Ant 进行构建进行测试自动化 使用可用的解决方案 我能够调试 ant build xml 文件 但 java 代码内的断点没有命中 任何人
  • 如何在 Mac 上使用脚本更改 XML 属性的特定值

    我的任务是编写一个脚本来更改大约 1000 台 Mac 上的 XML 文件中的特定值 显然 这需要编写脚本 并且最好只使用 Mac 上已有的工具 即不需要额外安装 这里的最终目标是在与活动目录相关的特定文件中禁用 IPv6 例如 旧文件
  • 如何将协变返回类型与智能指针一起使用?

    我有这样的代码 class RetInterface class Ret1 public RetInterface class AInterface public virtual boost shared ptr
  • 在 Codeigniter 中上传图像显示错误 上传路径似乎无效

    config upload path site path photos config allowed types gif jpg png jpeg config max size 2048 this gt load gt library u
  • Gradle 上传到底是如何工作的?

    我在理解 gradle 中创建和上传工件的所有部分如何组合在一起时遇到了一些实际问题 我在此脚本中的意图很简单 我想下载源 tarball 和可能的一堆依赖项 运行 build sh shell 脚本 最终创建一个二进制 tarball 并