Не удалось заставить плагин подписи Gradle работать с подпроектами - PullRequest
2 голосов
/ 18 июня 2020

Для одиночных проектов отлично работает. Но с подпроектами он либо подписывает, но не публикует sh, либо публикует, но не подписывает.

Похоже, нет официальной документации от Gradle org, показывающей пример подписи подпроектов, и они, похоже, сами не используют плагин подписи (что очень досадно, потому что исходный код Gradle имеет более 100 подпроектов, что может быть очень хорошим примером).

Суть проблемы заключается в том, что попытка добавить задачу подписи во все проекты или подпроекты приводит к Cannot add task 'signArchives' as a task with that name already exists., но любая попытка подписать каким-либо другим способом (например, перемещая его во включаемый файл и вызывая apply-from для этого файла из каждого проекта ) удаляет знак / публикацию sh задачу.

Другие плагины / задачи, например, jacoco, работают нормально при применении во всех проектах или подпроектах. Кажется, это c указано для плагина подписи. Это может быть даже ошибка в плагине подписи (разве каждое пространство имен не должно применяться к проекту, к которому оно применяется?). Я бы согласился на обходной путь, который работает.

Поиск в Google ответа нашел только одного человека, столкнувшегося с этой проблемой, и именно там я получил решение с включенным файлом, за исключением того, что оно удаляет publi sh task.

Вещи, которые я пробовал, подробно описаны в github, проблемы с gradle 13419. Пока ответа нет.

Ответы [ 2 ]

0 голосов
/ 27 июня 2020

Это была самая безумная вещь. Респонденты сказали, что это сработало, и это определенно не сработало в нашем проекте, поэтому я решил свести наш проект к примеру, и при попытке сделать это проблема больше не возникала. Понятия не имею, почему раньше это не работало, но все равно теперь работает.

0 голосов
/ 23 июня 2020

Ниже рабочая сборка. xml.

allprojects {
    apply plugin:  'java'
    apply plugin:  'maven-publish'
    apply plugin:  'signing'

    repositories {
        mavenCentral()
    }

    dependencies {
        testImplementation group: 'junit', name: 'junit', version: '4.12'
    }

    signing {
        sign configurations.archives
    }

    build.dependsOn signArchives
}

group 'com.tssp'
version '1.0-SNAPSHOT'

dependencies {
    implementation(project(':sub1'))
    implementation(project(':sub2'))
}

settings.gradle

rootProject.name = 'tSignSubPrj'
include 'sub1'
include 'sub2'

Журнал запуска, показывающий signArchives для подпроектов

14:30:39: Executing task 'build --dry-run'...

:sub1:compileJava SKIPPED
:sub1:processResources SKIPPED
:sub1:classes SKIPPED
:sub1:jar SKIPPED
:sub2:compileJava SKIPPED
:sub2:processResources SKIPPED
:sub2:classes SKIPPED
:sub2:jar SKIPPED
:compileJava SKIPPED
:processResources SKIPPED
:classes SKIPPED
:jar SKIPPED
:signArchives SKIPPED
:assemble SKIPPED
:compileTestJava SKIPPED
:processTestResources SKIPPED
:testClasses SKIPPED
:test SKIPPED
:check SKIPPED
:build SKIPPED
:sub1:signArchives SKIPPED
:sub1:assemble SKIPPED
:sub1:compileTestJava SKIPPED
:sub1:processTestResources SKIPPED
:sub1:testClasses SKIPPED
:sub1:test SKIPPED
:sub1:check SKIPPED
:sub1:build SKIPPED
:sub2:signArchives SKIPPED
:sub2:assemble SKIPPED
:sub2:compileTestJava SKIPPED
:sub2:processTestResources SKIPPED
:sub2:testClasses SKIPPED
:sub2:test SKIPPED
:sub2:check SKIPPED
:sub2:build SKIPPED

BUILD SUCCESSFUL in 59ms
14:30:39: Task execution finished 'build --dry-run'.
...