作为回购术语和语义的相对新手: 我有一个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仓库配置中存在的快照选项。
答案 0 :(得分:1)
SNAPSHOT(实际上是集成修订版)术语由repository layouts强制执行。
由于Artifactory强制执行single-typed repositories,因此Maven仓库无法处理.exe
文件的版本控制是正确的。
使用通用仓库是正确的路径 - 但您需要定义自己的文件夹和文件integration revision才能让Artifactory接收它。