2012-03-22 3 views
5

В нашем artifactory у нас есть репозиторий моментальных снимков, предназначенный для обработки 5 уникальных снимков. Мы добавили -SNAPSHOT-расширение к имени файла. SNAPSHOT также преобразуется в метку времени. Построение сделано с градиентом, и артефакт публикуется с бамбуковым и искусственным плагином.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 поэтому у нас есть список файлов, как:

  • подпроект-магистраль 20120321.154621-1-79.amp
  • подпроект-переговорные 20120321.154621-1-80.amp
  • подпроект-переговорные 20120321.154621-1-81.amp

Кто-нибудь имеет решение или предложение для макета другого каталога?

+0

Эта замена временной метки моментального снимка не должна происходить в Artifactory. Artifactory заменяет только моментальные снимки артефактов, которые развернуты до допустимого стандартного пути Maven (этот пример недопустим) в репозитории с макетом Maven по умолчанию.Каким макетом настроен ваш репозиторий? Вы сами выполняете замену? – noamt

+0

Макет репозитория - maven2default, и я не выполнял замену моментальных снимков. Я протестировал пути выше с помощью тестера путей в искусственной консоли администратора, почти все прекрасно ожидает, что номера сборки 79, 80, ... распознаются как классификаторы. Я не уверен, что это правильно. Я также тестировал его без номера сборки, в этом случае артефакт будет перезаписан. Там я ожидал бы второй файл с новой меткой времени и -2 ... в конце отметки времени –

+0

О, я только что узнал, что моя опечатка выше, что вызывает недопустимый путь maven2, исправил ее. Извините –

ответ

9

Как вы правильно заметили, номер сборки, которую вы прикрепляете к развернутому имени файла, идентифицируется как классификатор; это связано с тем, что Maven не указывает номер сборки с уникальным моментальным снимком.

Artifactory поддерживает ту же комбинацию отметки времени и номера сборки для «партий» артефактов и «ударов» метки времени и номера сборки при обнаружении новой «партии»; Есть 2 способа, в котором Artifactory обнаруживает артефакт «партия» с целью преобразования неуникальным уникальных снимков:

  1. Артефактов развернуты в точном порядке: артефакт (без классификатора), POM, прикрепленных артефакты (с классификаторами); Первый обычный артефакт, который будет развернут после POM, создаст новую «партию»; следовательно, предоставляя новую метку времени и номер строителя.

  2. Артефакты, развернутые с matrix param ключа «build.timestamp» и значение миллисекунды на основе временной метки эпохи; Артефакты с одинаковыми значениями времени будут связаны с одной и той же «партией».

Вы должны либо опустить номер сборки из развернутого файла и развернуть его с «build.timestamp» матрицей парами (сделать Artifactory ударять «партию» на каждом новом развертывании) или развернуть файлы уже с уникальным снимком.

+1

Да, thx. Развертывание файлов с уникальной меткой времени вместо SNAPSHOT делает автоматическую снимок чистой работы. –

0

Я разместил это решение: https://discuss.gradle.org/t/2-8-2-9-mavendeployer-doesnt-honour-uniqueversion-false-in-maven-uploadarchives/13370/8 Вопрос, который у меня был, состоял из нескольких публикаций в разделе публикации. Решение для меня состояло в том, чтобы добавить дополнительные артефакты к одной публикации. Затем все элементы, api jar, source jar, api source jar и main jar имеют одну и ту же метку времени для SNAPSHOT. Это, похоже, автоматически позаботится о 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" 
      } 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^