使用Gradle将多个现有JAR上载到Maven存储库

使用Gradle将多个现有JAR上载到Maven存储库,gradle,Gradle,我需要实现一个Gradle任务,将多个现有jar上传到Maven存储库 棘手的是,罐子的清单是事先不知道的。我希望它的工作方式是先加载某些“.tar.gz”文件,对其进行解压缩,然后扫描JAR并使用某种命名约定(比如使用JAR名称作为artifactId,使用.tar.gz版本作为version)上传它们 用Gradle做这件事最简单的方法是什么?目前,它是一个简单的bash脚本,用于搜索jar并为每个jar运行Maven deploy:deploy文件,但我需要将该功能合并到gradle构建脚

我需要实现一个Gradle任务,将多个现有jar上传到Maven存储库

棘手的是,罐子的清单是事先不知道的。我希望它的工作方式是先加载某些“.tar.gz”文件,对其进行解压缩,然后扫描JAR并使用某种命名约定(比如使用JAR名称作为artifactId,使用.tar.gz版本作为version)上传它们

用Gradle做这件事最简单的方法是什么?目前,它是一个简单的bash脚本,用于搜索jar并为每个jar运行Maven deploy:deploy文件,但我需要将该功能合并到gradle构建脚本中

理想情况下,我需要像“deployJars”这样的任务,它可以上传所有内容并依赖于“downloadTarGz”任务

更新:


上传pom而不附带任何JAR怎么样?我需要生成几个POM,这些POM将依赖于这些动态检测到的JAR并上传它们。“工件”要求我指定要上载的文件。

要通过gradle上载jar,必须将该jar声明为发布工件,并使用工件闭包将其添加到特定配置中:

apply plugin:'maven'

configurations{
    allJars
}

artifacts{
    allJars file("path/to/jarFile.jar")
}
现在,您可以配置动态创建的uploadAllJars任务:

uploadAllJars {
   repositories {  
        mavenDeployer {  
            repository(url: 'http://localhost:8081/artifactory/acme') {  
                authentication(userName: 'admin', password: 'password');  
            }
       }
 }  
问题是您想要上载多个工件。要实现这一点,您需要在构建脚本中增加一些动态性。为所有发现的jar动态创建publishartifact可以封装在一个任务中。在我的示例中,discoverAllJars任务只是在指定的文件夹中查找jar文件。在这里,您需要实现自己的逻辑来查找tgz归档中的JAR

group = "org.acme"
version = "1.0-SNAPSHOT"

task discoverAllJars{
    ext.discoveredFiles = []
    doLast{
        file("jars").eachFile{file ->
            if(file.name.endsWith("jar")){
                println "found file ${file.name}" 
                discoveredFiles << file
                artifacts{
                    allJars file
                }   
            }
        }   
    }
}
现在您只需要在UploadAllJAR和ConfigureUploadAllJAR之间添加一个依赖项:

uploadAllJars.dependsOn configureUploadAllJars    
本例对所有发现的jar文件使用相同的组和版本,jar名称作为artifactId。您可以使用pom过滤器机制根据自己的喜好进行更改

希望有帮助

干杯,
勒内

谢谢你,勒内!这正是我需要的!我是Gradle的新手,不知道您可以在执行期间配置任务。我尝试了一些与新的“maven publish”插件类似的东西,但它不起作用,因为它不允许在执行过程中更改发布。好的,现在我只能上传“原始”POM(没有任何附加的工件)。discoverAllJars任务不起作用。它遇到了一个错误
找不到方法工件()对于参数
应将此脚本添加到工作
配置{allJars}
uploadAllJars.dependsOn configureUploadAllJars