Как эффективно работать со снимками maven-3 с отметками времени?

Теперь, когда maven-3 отказался от поддержки для false для артефактов моментальных снимков, кажется, что вам действительно нужно использовать SNAPSHOTS с отметками времени. В частности, m2eclipse, который использует maven 3 внутренне, похоже, затронут этим, снимки обновления не работают, когда SNAPSHOTS не уникальны.

До казалось лучшей практикой установить для всех снимков значение uniqueVersion = false

Теперь, похоже, нет большой проблемы переключиться на версию с отметкой времени, в конце концов, они управляются центральным репозиторием нексуса, который может регулярно удалять старые снимки.

Проблема заключается в локальных рабочих станциях разработчиков. Их локальный репозиторий быстро становится очень большим с уникальными снимками.

Как справиться с этой проблемой?

Сейчас я вижу следующие возможные решения:

  • Попросите разработчиков очистить репозиторий. через регулярные промежутки времени (что приводит к большому разочарованию,

    Чтобы проверить beaviour и предоставить дополнительную информацию, я установил небольшой сервер Nexus, построил два проекта (a и b) и попробовал:

    a:

    
      4.0.0
      de.glauche
      a
      0.0.1-SNAPSHOT
      
        
            nexus
            nexus
            http://server:8081/nexus/content/repositories/snapshots
        
      
    
    
    

    b:

    
      4.0.0
      de.glauche
      b
      0.0.1-SNAPSHOT
        
        
            nexus
            nexus
            http://server:8081/nexus/content/repositories/snapshots/
        
      
     
        
            nexus
            nexus
            
                true
            
            http://server:8081/nexus/content/repositories/snapshots/
        
     
      
        
            de.glauche
            a
            0.0.1-SNAPSHOT
        
      
    
    

    Теперь, когда я использую maven и запустите "deploy" на "a", у меня будет

    a-0.0.1-SNAPSHOT.jar
    a-0.0.1-20101204.150527-6.jar
    a-0.0.1-SNAPSHOT.pom
    a-0.0.1-20101204.150527-6.pom
    

    в локальном репозитории. С новой версией отметки времени каждый раз, когда я запускаю цель развертывания. То же самое происходит, когда я пытаюсь обновить снимки с сервера nexus (закрыть проект «a», удалить его из локального репозитория, построить «b»)

    В среде, где создается множество снимков (подумайте о сервере Hudson ... ), локальный репозиторий заполняется старыми версиями быстро

    Обновление 2:

    Чтобы проверить, как и почему это не удается, я провел еще несколько тестов. Каждый тест запускается для очистки всего (de / glauche удаляется как с машин, так и с нексуса)

    • mvn deploy с maven 2.2.1: а 0.0.1-SNAPSHOT
       
        20101206.201808  3  20101206201808  jar  0.0.1-20101206.201808-3  20101206201808  пом  0.0.1-20101206.201808-3  20101206201808 

    • запустить зависимости обновления (на машине B) в m2eclipse (встроенный m3 final) -> в локальном репозитории есть snapshot.jar + snapshot-timestamp.jar: (

    • запустить цель пакета с внешним maven 2.2.1 -> локальный репозиторий имеет snapshot.jar + snapshot-timestamp.jar: (

    Итак, резюмируя: цель «развертывание» в maven3 работает лучше, чем в 2.2.1, локальный репозиторий на машине создания выглядит нормально. Но у получателя всегда много версий с временными метками ...

    Что я делаю не так?

    Обновление 3

    Я также тестировал различные другие конфигурации, сначала заменил nexus на artifactory -> такое же поведение. Затем используйте клиенты linux maven 3 для загрузки снимков из менеджера репозитория -> в локальном репозитории все еще есть снимки с отметками времени: (

82
задан Community 23 May 2017 в 12:34
поделиться