gpt4 book ai didi

gradle - Gradle-将所有项目的依赖项发布到另一个 Artifactory

转载 作者:行者123 更新时间:2023-12-03 05:11:55 24 4
gpt4 key购买 nike

作为一个软件公司,我们被要求提供具有所有依赖关系的软件。依赖项应发布到另一个 Artifact 。换句话说,我们希望从项目中获取项目的所有依赖项,并将其发布到另一个项目中,从而使客户端能够构建软件。

有没有办法在Gradle中做到这一点?

最佳答案

改编自this gist

public class MavenArtifactCopyTask extends DefaultTask {
@Input
List<Configuration> configurations;

@OutputDirectory
File repoDir

@TaskAction
void build() {
for (Configuration configuration : configurations) {
copyJars(configuration)
copyPoms(configuration)
}
}

private void copyJars(Configuration configuration) {
configuration.resolvedConfiguration.resolvedArtifacts.each { artifact ->
def moduleVersionId = artifact.moduleVersion.id
File moduleDir = new File(repoDir, "${moduleVersionId.group.replace('.','/')}/${moduleVersionId.name}/${moduleVersionId.version}")
GFileUtils.mkdirs(moduleDir)
GFileUtils.copyFile(artifact.file, new File(moduleDir, artifact.file.name))
}
}

private void copyPoms(Configuration configuration) {
def componentIds = configuration.incoming.resolutionResult.allDependencies.collect { it.selected.id }

def result = project.dependencies.createArtifactResolutionQuery()
.forComponents(componentIds)
.withArtifacts(MavenModule, MavenPomArtifact)
.execute()

for(component in result.resolvedComponents) {
def componentId = component.id

if(componentId instanceof ModuleComponentIdentifier) {
File moduleDir = new File(repoDir, "${componentId.group.replace('.','/')}/${componentId.module}/${componentId.version}")
GFileUtils.mkdirs(moduleDir)
File pomFile = component.getArtifacts(MavenPomArtifact)[0].file
GFileUtils.copyFile(pomFile, new File(moduleDir, pomFile.name))
}
}
}
}

用法
task copyMavenArtifacts(type: MavenArtifactCopyTask) {
configurations = [project.configurations.all, project.buildScript.configurations.classpath]
repoDir = file("$buildDir/mavenArtifacts")
}

一旦所有的jars和poms都位于maven目录结构中的本地文件夹中,您可以
  • 将它们全部上传到另一个存储库
  • 将该文件夹用作Maven存储库
  • 关于gradle - Gradle-将所有项目的依赖项发布到另一个 Artifactory ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283342/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com