Развертывание Gradle Nexus и FlatDir без плагина java, ear или war

У меня многопроектная сборка Gradle (версия 2.1!!), состоящая из не-Java проектов.

Я хотел бы развернуть сгенерированные артефакты (файлы.tar.gz) в Nexus, а также в каталог.

В настоящее время я определяю репозитории в корне build.gradle в repositories блок, а также снова для каждого подпроекта в repositories блок внутри subprojects в корне build.gradle файл.

Я применяю base плагин к корневому проекту и тому maven-publish Плагин для всех подпроектов, которые имеют артефакты для развертывания.

Я пытался следовать инструкциям здесь:

но ничего не получалось.:-(

Вот что я делаю:

...
# apply the maven-publish plugin only to sub-projects that produce artifacts that should be uploaded.
apply plugin: 'maven-publish'

publishing {
    publications {
        tarFiles (MavenPublication) {
            artifact compressTar
        }
    }

    repositories {
        add rootProject.repositories.fsShare
        add rootProject.repositories.nexusDeploy
    }
}
...

compressTar это мой обычай Tar задача, которая создает артефакты, которые я хочу загрузить.

Когда я выполню ./gradlew publishTarFilesPublicationToNexusDeployRepository Я получаю следующую ошибку:

Execution failed for task ':mySubProject:publishTarFilesPublicationToNexusDeployRepository'.
> Failed to publish publication 'tarFiles' to repository 'nexusDeploy'
   > Failed to retrieve remote metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml from/to remote (https://myProject.nexus.url:443/nexus3/repository/builds/): Could not get resource 'myRootProject/mySubProject/0.0.0.0-SNAPSHOT/maven-metadata.xml'

Когда я выполню uploadArchives, задача выполнена успешно, но нигде ничего не загружено и из вывода это выглядит как uploadArchives задание выполняется только для подпроектов, в которых не применен плагин maven.

Как правильно это сделать? Какие плагины я должен применять, когда и где?

1 ответ

Видимо, здесь было две не связанные "проблемы на работе".

Проблема 1): я не смог опубликовать на Nexus и получил Failed to retrieve remote metadata-ошибка:

Ответ 1): Я пытался опубликовать "SNAPSHOT" в хранилище, которое было настроено так, чтобы не принимать сборку "SNAPSHOT". Переименование версии сборки из 1.2.3.4-SNAPSHOT во что-либо другое (например, 1.2.3.4-SNAPSHOT-dev или более разумный 1.2.3.build4`) работал нормально.

Проблема 2) Публикация в хранилище flatDir не работала. Плагин maven-publish не создал для него задачу публикации.

Ответ 2) Чтобы использовать maven-publish для публикации в каталоге, flatDir очевидно, не распознается как хранилище, в которое плагин maven-publish может публиковать. Определение хранилища 'directory' следующим образом работало нормально:

maven {
    name "fsShare"
    url "/share/pkg"
}
Другие вопросы по тегам