【问题标题】:Gradle: How to upload custom JAR file to Maven repositoryGradle:如何将自定义 JAR 文件上传到 Maven 存储库
【发布时间】:2012-07-15 07:23:21
【问题描述】:

我在不使用 Gradle Jar 任务的情况下构建了一个 jar 文件(我需要在我的任务中使用 Ant 任务)。如何配置 uploadArchives 以便能够在指定的存储库中安装 JAR。

我试图用

覆盖默认工件
uploadArchives {
    repositories {
        mavenDeployer {
            // some Maven configuration
        }
    }
}

artifacts {
    archives file: file('bin/result.jar')
}

但我收到一个错误,可能没有 2 个具有相同类型和分类器的工件,这意味着此配置添加而不是覆盖配置。

【问题讨论】:

    标签: maven jar gradle


    【解决方案1】:

    你说得对,artifacts 闭包只能将工件添加到给定的配置中(参见ArtifactHandler API)。

    你有两个选择:

    1) 添加一个工件过滤器,如here 所述(参见第 45.6.4.1 章“每个项目的多个工件”)。如果您使用它,请尝试声明您的 archives 配置,例如:

    artifacts {
      archives file: file('bin/result.jar'), name: 'result', type: 'jar'
    }
    

    这样,您的工件过滤器中的内容如下:

    addFilter('result') {artifact, file ->
      artifact.name == 'result'
    }
    

    2) 将其作为单独的 Maven 模块上传。如果 result.jar 是您上传的唯一 jar,这可能是一个很好的解决方案。

    configurations {
      resultArchives
    }
    
    uploadResultArchives {
      repositories {
        mavenDeployer {
          repository(url: "same/url/here")
        }
      }
    }
    
    artifacts{
      resultArchives file: file('bin/result.jar')
    }
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的解决方案。后者对我来说是一种魅力。
    • 我收到一个错误 Gradle DSLmethod not found 'uploadResultArchive' ,我已经应用了插件 maven。需要任何其他插件
    • @sver 我猜他的意思是 uploadArchives
    • 这会创建 pom.xml 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多