Gradle maven-publish: задача опубликовать только один

У меня есть проект Java, который создает и публикует множество jar-файлов (a.jar, b.jar,...), используя:

publishing {
    publications {
        a (MavenPublication) {
            artifactId 'a'
            artifact aJar
        }
        b (MavenPublication) {
            artifactId 'a'
            artifact aJar
        }
    }
}

repositories { ...

Я также определил файл z.jar и хочу, чтобы его опубликовала специальная задача, и я не хочу создавать/опубликовывать его для задач сборки и публикации (publishToMaven*).

Как я могу определить этот вид задачи?

Я пробую что-то подобное и другой вариант, и мне не удалось скомпилировать градиент:

task zPublish(type: PublishToMavenRepository) {
    publication = new MavenPublication() {
        artifactId 'z'
        artifact zJar
    }
}

Я ищу в исходном коде плагина maven-publish безуспешно.

Спасибо за хорошую идею.


person Nicolas Albert    schedule 31.05.2017    source источник


Ответы (2)


Попробуйте создать отдельные задачи

publishing {
    publications {
        a (MavenPublication) {
            artifactId 'a'
            artifact aJar
        }
        b (MavenPublication) {
            artifactId 'b'
            artifact bJar
        }
        z(MavenPublication) {
            artifact zJar
        }
    }
}

task zPublish() {
    dependsOn('publishZPublicationToMavenRepository')
    description('Publishes Z')
}

task otherPublish() {
    dependsOn('publishAPublicationToMavenRepository', 'publishBPublicationToMavenRepository')
    description('Publishes A and B')
}
person k107    schedule 25.06.2019

По умолчанию плагин Gradle maven-publish создает обычную задачу для каждой публикации и репозитория, поэтому, если вы определите свою публикацию, вы сможете опубликовать ее, используя эту обычную задачу.

Например, если вы определили публикацию z, вы можете использовать задачу publishZPublicationToMavenRepository.

person webdizz    schedule 02.06.2017
comment
Но я хочу исключить publishZPublicationToMavenRepository при вызове publish, publishToMavenLocal, publishToMavenRepository. - person Nicolas Albert; 04.06.2017
comment
Затем вы можете просто запустить publish -X publushZPublicationToMavenRepository. -X исключит данную задачу из плана выполнения. - person webdizz; 04.06.2017
comment
Моя команда использует плагин Eclipse gradle, поэтому самый простой способ — дважды щелкнуть задачу без аргументов. Мой текущий обходной путь — отключить publishZPublicationToMavenRepository по умолчанию и активировать его вручную, когда мне это нужно. - person Nicolas Albert; 06.06.2017
comment
Что ж, есть некоторые способы, с помощью которых Gradle предлагает проверить страницу документации OOTB на странице docs.gradle.org/current/userguide/ - person webdizz; 06.06.2017