15

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

我试图用

uploadArchives {
    repositories {
        mavenDeployer {
            // some Maven configuration
        }
    }
}

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

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

4

1 回答 1

22

没错,artifacts闭包只能将工件添加到给定的配置中(请参阅ArtifactHandler API)。

你有两个选择:

1) 按此处所述添加工件过滤器(参见第 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')
}

希望这可以帮助。

于 2012-07-16T13:33:57.230 回答