Gradle:如何将自定义JAR文件上载到Maven存储库

Woj*_*ski 15 jar gradle maven

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

我试图用.覆盖默认工件

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

artifacts {
    archives file: file('bin/result.jar')
}
Run Code Online (Sandbox Code Playgroud)

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

rod*_*ion 21

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

您有两种选择:

1)按照此处的描述添加工件过滤器(参见第45.6.4.1节"每个项目的多个工件").如果您使用此功能,请尝试声明您的archives配置,如:

artifacts {
  archives file: file('bin/result.jar'), name: 'result', type: 'jar'
}
Run Code Online (Sandbox Code Playgroud)

这样,您在工件过滤器中就是这样的:

addFilter('result') {artifact, file ->
  artifact.name == 'result'
}
Run Code Online (Sandbox Code Playgroud)

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

configurations {
  resultArchives
}

uploadResultArchives {
  repositories {
    mavenDeployer {
      repository(url: "same/url/here")
    }
  }
}

artifacts{
  resultArchives file: file('bin/result.jar')
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.