在Artifactory

时间:2017-02-08 18:21:05

标签: maven gradle executable artifactory snapshot

作为回购术语和语义的相对新手: 我有一个gradle项目,它构建一个Spring-Boot jar文件,然后运行一个InstallAnywhere项目文件来打包jar作为Windows服务的安装程序。我需要将可执行安装程序发布为SNAPSHOT。我使用的是gradle artifactory 插件(不是 artifactory-publish 插件,只是因为我跟随姐妹项目的例子)。

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

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创建快照?我们将看看它是否仅限于处理与Java相关的类型(jar,war,ear等)的Maven repos。因此,我们考虑使用通用(?)repo类型为二进制快照创建另一个Artifactory仓库,但配置屏幕不提供Maven仓库配置中存在的快照选项。

1 个答案:

答案 0 :(得分:1)

SNAPSHOT(实际上是集成修订版)术语由repository layouts强制执行。

由于Artifactory强制执行single-typed repositories,因此Maven仓库无法处理.exe文件的版本控制是正确的。

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