Рубрики
Без рубрики

Контрольные суммы артефактов Maven – Что?

Предотвратите неудачные сборки. Помеченный java, maven, maven best practice.

Если вы используете Apache Maven , вы могли столкнуться с проблемами, подобными этой :

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
...
.... (remove many lines for brevity).
...
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
    at java.util.zip.ZipFile.read(Native Method)
    at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
    at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
    at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
...

Как такое могло случиться? В большинстве случаев это проблемы с загрузкой/сетью, которые вызывают нечто подобное. В крайне редких случаях это также может быть аппаратная ошибка (но обычно у меня есть сомнения на этот счет). Это означает, что загруженные артефакты загружены неправильно или загружены из репозиториев, которые больше не существуют. Или любая другая странная вещь, которую вы могли бы себе представить. Если у вас есть артефакты, содержащие фрагменты html, это показатель того, что вы пытаетесь загрузить артефакты из репозиториев, которые больше не существуют. Это означает, что вы должны проверить свою конфигурацию для используемых вами репозиториев, которые

Итак, теперь возникает вопрос: что вы можете сделать, чтобы предотвратить это в будущем?

Если вы посмотрите на Stackoverflow , связанный с этим. Более или менее во всех ответах вам будет предложено удалить ваш локальный кэш $HOME/.m2/repository и перестроить. К сожалению, это всего лишь попытка устранить симптом, но не настоящую причину. Итак, работа начинается с удаления локального кэша в качестве первого шага.

А теперь очень важная часть:

Вы должны настроить Maven на проверку контрольных сумм загруженных артефактов и сбой сборки, если они неверны. Это называется политика контрольной суммы , которую я настоятельно рекомендую использовать.

Это означает, что вам необходимо изменить конфигурацию в вашем settings.xml . Это означает, что вам необходимо изменить политику контрольной суммы в вашем settings.xml . Временным решением было бы вызвать maven с помощью: --strict-checksums , который точно делает это, но только для соответствующего вызова Maven, а не всегда. Так что лучше настроить это в вашем settings.xml который будет выглядеть следующим образом:


  ...
  
    
      ...
      
        
          codehausSnapshots
          Codehaus Snapshots
          
            false
            always
            fail
          
          
            true
            never
            fail
          
          ...
        
      
      
        ...
      
      ...
    
  
  ...

Кроме того, вы должны настроить это для всех ваших репозиториев в вашем settings.xml . Если вы используете диспетчер репозиториев локально или в корпоративной среде. Вы также должны проверить свой менеджер репозитория, правильно ли он настроен для проверки контрольных сумм. Вы, конечно, не должны забывать проверять, загружаете ли вы через https:// вместо http:// из всех ваших удаленных репозиториев.

Оригинал: “https://dev.to/khmarbaise/maven-artifact-checksums—what-396j”