Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snapshot 人工快照文件名处理_Snapshot_Artifactory - Fatal编程技术网

Snapshot 人工快照文件名处理

Snapshot 人工快照文件名处理,snapshot,artifactory,Snapshot,Artifactory,在我们的artifactory中,我们定义了一个快照repo来处理最多5个唯一的快照。我们在文件名中添加了-SNAPSHOT-.extension。快照也会转换为时间戳。使用gradle完成构建,并使用Bambol和artifactory插件发布工件 部署到artifactory的文件 inhouse-snapshots:com/example/project/subproject/trunk-SNAPSHOT/subproject-trunk-SNAPSHOT-79.amp 变成 inhou

在我们的artifactory中,我们定义了一个快照repo来处理最多5个唯一的快照。我们在文件名中添加了-SNAPSHOT-.extension。快照也会转换为时间戳。使用gradle完成构建,并使用Bambol和artifactory插件发布工件

部署到artifactory的文件

inhouse-snapshots:com/example/project/subproject/trunk-SNAPSHOT/subproject-trunk-SNAPSHOT-79.amp
变成

inhouse-snapshots:com/example/project/subproject/trunk-SNAPSHOT/subproject-trunk-20120321.154621-1-79.amp
这很好,每个构建都会添加一个具有递增构建编号的新文件,但时间戳编号始终保持为20120321.154621-1,因此我们有一个文件列表,如:

  • 子项目-trunk-20120321.154621-1-79.amp
  • 子项目-trunk-20120321.154621-1-80.amp
  • 子项目-trunk-20120321.154621-1-81.amp

有人对另一个目录布局有解决方案或建议吗?

正如您正确观察到的,附加到已部署文件名的内部版本号被标识为分类器;这是因为Maven没有指定具有非唯一快照的内部版本号

Artifactory为工件的“批次”维护相同的时间戳和构建编号组合,并在检测到新的“批次”时“凹凸”时间戳和构建编号;为了将非唯一快照转换为唯一快照,Artifactory检测工件“批次”的方法有两种:

  • 工件的部署顺序如下:工件(无分类器)、POM、附加工件(带分类器);POM之后部署的第一个普通工件将创建一个新的“批”;因此,提供了一个新的时间戳和生成器编号

  • 使用“build.timestamp”键和基于毫秒的历元时间戳值部署的工件;具有相同时间戳值的工件将在同一“批”下关联

  • 您应该从已部署的文件中省略构建编号,并使用“build.timestamp”矩阵参数进行部署(以使Artifactory在每个新部署中“批量”部署),或者使用唯一的快照部署已部署的文件。

    我发布了以下解决方案: 我的问题是出版部门有多份出版物。我的解决方案是将额外的工件添加到一个发布中。然后,所有项目,api jar、源jar、api源jar和主jar都具有相同的快照时间戳。这似乎为我自动处理build.timestamp

    task apiJar(type: Jar) {
        classifier = 'api'
        from(sourceSets.main.output) {
            include "com/company/app/dto/**"
        }
    }
    
    task sourceJar(type: Jar, dependsOn: classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }
    
    task apiSourceJar(type: Jar, dependsOn: classes) {
        classifier = 'api-sources'
        from(sourceSets.main.allSource) {
            include "com/company/app/dto/**"
        }
    }
    
    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
                pom.withXml {
                    asNode().appendNode('description', 'APP Sprint Boot App')
                }
                artifact apiJar
                artifact sourceJar
                artifact apiSourceJar
            }
        }
        repositories {
            maven {
                credentials {
                    username = 'username'
                    password = 'password'
                }
                if(project.version.endsWith('-SNAPSHOT')) {
                    url "http://server:9081/artifactory/libs-snapshot-local"
                } else {
                    url "http://server:9081/artifactory/libs-release-local"
                }
            }
        }
    }
    

    此快照时间戳替换不应发生在Artifactory中。Artifactory仅使用默认Maven布局替换存储库中部署到有效Maven标准路径(本例无效)的工件的快照。您的存储库配置为使用什么布局?您自己执行替换吗?存储库布局是maven2default,我没有执行快照替换。我在artifactory管理控制台中用path tester测试了上面的路径,除了版本号79,80。。。被识别为分类器。我不确定这是否正确。我也在没有构建编号的情况下测试了它,在这种情况下,工件将被覆盖。在那里,我希望第二个文件具有新的时间戳和-2。。。在时间戳的末尾,我刚刚识别出上面导致maven2路径无效的输入错误,修复了它。对不起,谢谢。部署具有唯一时间戳(而不是快照)的文件可以使自动快照清理工作正常。