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

Подпишите плагин Eclipse с помощью Gradle

Когда мы распространяем плагин Eclipse, лучше подписывать ваши файлы .jar с помощью jarsigner в комплекте с JDK… Помеченный eclipse, java, gradle.

Когда мы распространяем плагин Eclipse, лучше подписывать ваши файлы .jar с помощью jarsigner в комплекте с JDK. С помощью этого процесса пользователь может установить ваш плагин без предупреждения вот так . В Eclipse wiki у нас есть Страница подписи Jar , но на ней не объясняется подробный способ подписи. Здесь давайте посмотрим, как Gradle может подписывать ваши файлы .jar.

Для подписи jarsigner , вам нужно Хранилище ключей Java файл, в котором хранится цепочка ключей. Мы можем использовать keytool для создания самоподписанной подписи, но здесь мы будем использовать Давайте зашифруем , чтобы сгенерировать несамоподписанную подпись.

Сначала следуйте инструкциям Let’s Encrypt, затем вы можете сгенерировать privkey.pem и fullchain.pem . Во-вторых, используйте команду openssl для создания файла .p12 , необходимого для создания хранилища ключей Java. Вот пример:

$ openssl pkcs12 -export \
  -in fullchain.pem -inkey privkey.pem \
  -out your.p12 \
  -name eclipse-plugin

В-третьих, сгенерируйте файл .jks с помощью keytool команда:

$ keytool -importkeystore \
  -srckeystore your.p12 -srcstorepass $SRC_PASS -srcstoretype PKCS12 \
  -destkeystore your.jks -deststorepass $DEST_PASS 

Мы используем этот файл .jks для подписи, поэтому помните свой $DEST_PASS . Вам также необходимо сохранить этот файл .jks в секрете. Если вы используете Travis CI, команда encrypt-file – ваш друг.

Хорошо, теперь у нас есть все необходимое, давайте настроим наш файл build.gradle . Что вам нужно, так это функция для подписи как файлов plugins jar, так и файлов feature jar. Сам Groovy не предоставляет функции для подписи, поэтому используйте Задача SignJar муравья вместо этого, как показано ниже:

// sign all .jar file under specified dir
ext.signJar = { File dir ->
  def keystorepass = project.hasProperty('DEST_PASS') ? keystorepass : '';
  if (keystorepass.isEmpty()) {
    print 'to sign eclipse plugins, set "DEST_PASS" project property'
    return
  }

  dir.traverse(type: FILES, nameFilter: ~/.*\.jar$/) {
    def relativePath = rootDir.toPath().relativize( it.toPath() )
    println "signing ${relativePath}"
    ant.signjar(
        destDir: it.parentFile,
        jar: it,
        alias: 'eclipse-plugin',
        keystore: "path/to/your.jks",
        storepass: keystorepass,
        tsaurl: 'http://timestamp.digicert.com',
        verbose: true
    )
  }
}

Отличная работа! Вы можете просто вызвать эту функцию между jar task и artifacts.xml генерация файлов ( потому что это artifacts.xml содержит md5-хэш файлов .jar).

Вот PR, который вводит jarsigner для обнаружения ошибок сборки , вы можете проверить его как рабочее решение. Он использует Gradle 5.0 RC3, но он также должен работать с Gradle 4.

Оригинал: “https://dev.to/kengotoda/sign-eclipse-plugin-by-gradle-4md8”