Создайте файл контрольной суммы SHA512, используя плагин maven-publish в Gradle - PullRequest
0 голосов
/ 25 октября 2018

Плагин maven-publish по умолчанию генерирует файлы контрольных сумм MD5 и SHA1 для всех артефактов.Но есть ли способ заставить плагин генерировать безопасные файлы контрольных сумм (предпочтительнее SHA512)?

Это довольно легко воспроизвести.Я только что инициализировал новый java-library проект и добавил плагин maven-publish и его конфигурацию

build.gradle:

apply plugin: 'java'
apply plugin: 'maven-publish'

repositories {
  jcenter()
}

dependencies {
}

publishing {
  repositories {
    maven {
      url rootProject.buildDir.path + '/repo'
    }
  }
  publications {
    mavenJava(MavenPublication) {
      groupId = 'org.gradle.sample'
      artifactId = 'project1-sample'
      version = '1.1'

      from components.java
    }
  }
}

Я уже ознакомился с документацией по gradle и javadoc, но не былв состоянии найти любые подсказки в файлах контрольной суммы вообще.Я знаю, что довольно легко сгенерировать контрольные суммы для артефактов, используя задачу контрольной суммы ANT, подобную этой:

doLast {
  ant.checksum(file: archivePath, algorithm: "SHA-512")
}

Но мне как-то нужно было бы поместить их в правильную папку в сторону фактических артефактов «вручную», что является чем-тоЯ бы хотел избежать.


РЕДАКТИРОВАТЬ :
Если невозможно указать алгоритм контрольной суммы, можно ли каким-то образом подключиться к задаче publish идобавить пользовательский файл контрольной суммы в папки назначения артефакта?Я не хочу добавлять сами файлы контрольных сумм в качестве артефактов, поскольку для контрольных сумм будут контрольные суммы MD5 и SHA1, что не имеет смысла.

1 Ответ

0 голосов
/ 26 октября 2018

Короче говоря

Вы, вероятно, не можете настроить алгоритмы контрольной суммы, используемые maven-publish, так как они кажутся жестко закодированными.

Более подробно

Gradleиспользует Sonatype Aether из org.gradle.api.publication.maven.internal.action.MavenDeployAction для публикации в репозиториях Maven.Вы можете найти ссылку на этот класс в журнале отладки для вашей сборки:

23:23:23.232 [INFO] [org.gradle.api.publication.maven.internal.action.MavenDeployAction] Deploying to file:/tmp/foobar/build/repo/

Кажется, что алгоритмы контрольной суммы в DeployRequest не передаются в Aether.Другими словами, кажется, что эфир как-то сам выбирает алгоритмы.

Глядя на это со стороны эфира, единственные ссылки на sha1 в не тестовых файлах, которые я могу найти в репозитории Aether это три: 1 , 2 , 3 .Эти три класса также кажутся единственными (не тестовыми) пользователями метода calc из org.sonatype.aether.util.ChecksumUtils для вычисления контрольных сумм.Другими словами: независимо от того, какой из этих классов транзитивно используется Gradle (если только он не должен странным образом получать контрольные суммы откуда-то еще), в каждом случае алгоритмы контрольной суммы SHA-1 и MD5 жестко закодированы, и вы не можете их изменить.

...