在 Artifactory 中将可执行二进制文件发布为 Maven SNAPSHOT

Publish executable binary as Maven SNAPSHOT in Artifactory

作为相对新手询问 repo 术语和语义: 我有一个构建 Spring-Boot jar 文件的 gradle 项目,然后运行 ​​InstallAnywhere 项目文件以将 jar 打包为 Windows 服务的安装程序。我需要将可执行安装程序发布为快照。我正在使用 gradle artifactory 插件(不是 artifactory-publish 插件,只是因为我正在关注姊妹项目的示例).

工件正在发布到 Maven 快照存储库,但“-SNAPSHOT”占位符未被时间戳替换。当我将原始 Jar 文件添加到要发布的工件时,Jar 文件会添加一个时间戳,但 .exe 仍然没有。相关 gradle 代码如下,项目版本在 gradle.properties 中设置为“1.0.0-SNAPSHOT”,以及其他显示的工件配置属性:

task buildInstaller {
    inputs.files cleanJarName.outputs
    outputs.file installerFile
    doLast {
        project.exec {
            workingDir 'InstallKit'
            commandLine "${System.env.INSTALLANYWHERE_HOME}\build.exe", 'MyInstallAnywhereProject.iap_xml', '-nupd'
        }
    }
}

artifactoryPublish {
    dependsOn buildInstaller
}

configurations {
    published
}

artifacts {
    published installerFile
}

artifactory {
    contextUrl = project.artifactoryContextUrl
    publish {
        repository {
            repoKey  = project.artifactoryPublishRepo
            username = project.artifactoryUser
            password = project.artifactoryPassword
        }
        defaults {
            publishConfigs('published')
            publishBuildInfo = true
            publishArtifacts = true
            publishPom = true
            publishIvy = true
        }
    }
    resolve {
        repository {
            repoKey  = project.artifactoryResolveRepo
            username = project.artifactoryUser
            password = project.artifactoryPassword
            maven=true
        }
    }
}

那么为什么 Artifactory 不能正确地快照一个 .exe?我们要看看它是否是 Maven 存储库的限制,它只处理 Java 相关的类型(jar、war、ear 等)。因此,我们考虑使用通用(?)存储库类型为二进制快照创建另一个 Artifactory 存储库,但配置屏幕不提供 Maven 存储库配置中存在的快照选项。

SNAPSHOT(实际上是 Integration Revision)术语由 repository layouts 强制使用。

由于 Artifactory 强制实施 single-typed repositories,您认为 Maven 存储库不会处理 .exe 文件的版本控制是正确的。

使用通用存储库是正确的路径 - 但您需要定义自己的文件夹和文件 integration revision 才能让 Artifactory 使用它。