Запланированная задача «Удалить моментальные снимки» Nexus Repository Manager не очищает файлы подписи GPG, связанные с артефактом с временной меткой?

Я запускаю Dockerized Nexus Repository Manager v2.13.0-01. У меня есть артефакты в репозитории снимков, которые я хочу удалить с помощью Remove Snapshots запланированной задачи. Мои параметры для этой запланированной задачи следующие.

  • Репозиторий / Группа: Снимки (Репо)
  • Минимальное количество снимков: 1
  • Хранение снимков (дней): 1
  • Удалить, если выпущено: (не отмечено)
  • Льготный период после выпуска (дни): 1
  • Удалить немедленно: (отмечено)

Когда я запускаю эту задачу, я ожидаю, что будет сохранен как минимум 1 снимок, а все остальные снимки старше 1 дня будут удалены. Когда я нахожусь на вкладке Browse Storage, я замечаю, что все файлы .jar + .pom удаляются, включая связанные файлы .md5 и .sha1. Например, удаляются следующие файлы.

  • мой-артефакт-0.0.1-20160705-020817-5-javadoc.jar
  • мой-артефакт-0.0.1-20160705-020817-5-javadoc.jar.md5
  • мой-артефакт-0.0.1-20160705-020817-5-javadoc.jar.sha1
  • мой-артефакт-0.0.1-20160705-020817-5-sources.jar
  • мой-артефакт-0.0.1-20160705-020817-5-sources.jar.md5
  • мой-артефакт-0.0.1-20160705-020817-5-sources.jar.sha1
  • мой-артефакт-0.0.1-20160705-020817-5.pom
  • мой-артефакт-0.0.1-20160705-020817-5.pom.md5
  • мой-артефакт-0.0.1-20160705-020817-5.pom.sha1
  • мой-артефакт-0.0.1-20160705-020817-5.jar
  • мой-артефакт-0.0.1-20160705-020817-5.jar.md5
  • мой-артефакт-0.0.1-20160705-020817-5.jar.sha1

Однако связанные хэши .asc, .asc.md5 и .asc.sha1 НЕ удаляются. Например,

  • мой-артефакт-0.0.1-20160705-020817-5.jar.asc
  • мой-артефакт-0.0.1-20160705-020817-5.jar.asc.md5
  • мой-артефакт-0.0.1-20160705-020817-5.jar.asc.sha1

Ниже приведены 2 плагина maven, которые я использую для публикации в моем репозитории SNAPSHOT в папке pom.xml.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-gpg-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <id>sign-artifacts</id>
        <phase>verify</phase>
        <goals>
          <goal>sign</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>nexus-staging-maven-plugin</artifactId>
    <version>1.6.7</version>
    <extensions>true</extensions>
    <configuration>
      <serverId>mycompanynexus</serverId>
      <nexusUrl>http://nexus.mycompanynexus.io/</nexusUrl>
      <autoReleaseAfterClose>true</autoReleaseAfterClose>
    </configuration>
  </plugin>

Мой раздел управления распространением в pom.xml выглядит следующим образом.

<distributionManagement>
 <snapshotRepository>
   <id>mycompanynexus</id>
   <url>http://nexus.mycompanynexus.io/content/repositories/snapshots/</url>
 </snapshotRepository>
 <repository>
  <id>mycompanynexus</id>
  <url>http://nexus.mycompanynexus.io/content/repositories/releases/</url>
 </repository>
</distributionManagement>

Не показан мой settings.xml, где я предоставляю учетные данные для публикации в этих репозиториях.

При развертывании я просто набираю mvn clean deploy с Maven v3.3.9.

Когда я искал решения, я наткнулся на это сообщение в блоге http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/, однако я не знаю, согласен ли я с не подписывать мои артефакты SNAPSHOT (поскольку, если бы я этого не сделал, то подписи и контрольные суммы GPG не были бы созданы, и мне не пришлось бы беспокоиться об их удалении с помощью запланированной службы). Более того, руководство OSSRH иллюстрирует подписание артефактов SNAPSHOT. Может быть, это стандартная практика - НЕ подписывать артефакты SNAPSHOT?

Любая помощь приветствуется.


person Jane Wayne    schedule 05.07.2016    source источник


Ответы (1)


Для внутреннего использования Nexus Repository Manager, вероятно, не является стандартной практикой подписывать артефакты с помощью GPG - не выпущенные и не снимки состояния. Однако для распространения в центральный репозиторий через OSSRH это довольно распространено, хотя, вероятно, также не является стандартным.

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

С другой стороны, запланированная задача удаления моментального снимка должна работать для этого удаления. Однако в последних выпусках произошли некоторые изменения в производительности и поведении. Я только что проверил это, и оказалось, что в 2.11+ есть регресс. Мы создали проблему на странице https://issues.sonatype.org/browse/NEXUS-10460. Следите за обновлениями. Надеюсь, мы включим исправление в следующий выпуск (2.14).

Обновление 2016-07-13: теперь доступен патч, и к связанной проблеме прикреплен исправленный jar.

person Manfred Moser    schedule 07.07.2016