Gradle - plugin maven-publier: Comment faire pour publier seulement spécifique à la publication d'un référentiel

Nous avons deux objets divers, qui va être publié dans deux différents dépôts maven.

  • "ProjectXMergedWar" devrait être publié à la "MyMavenRepo1" (snapshots)
  • "ProjectXJarRelease" devrait être publié à la "MyMavenRepo2" (libération)
  • "ProjectXMergedWar" ne devrait jamais être publié "MyMavenRepo2" (libération)
  • "ProjectXJarRelease" ne devrait jamais être publié "MyMavenRepo1" (snapshots)

Nous utilisons le plugin maven-publier vous permet de configurer un ensemble de publications et de reposistories. Le plugin génère alors des tâches pour toutes les combinaisons de publications et dépôts (voir la liste des tâches en bas). Actuellement, les tâches publish et publishRelease est en train de faire ce que nous voulons, mais il y a des tâches que nous ne voulons pas.

Certaines solutions peuvent être:

  • Pouvez nous supprimer les indésirables tâches**?
  • Peut-on configurer maven-publier à seulement de générer des deux publiez des tâches (le voulait tâches*)?
  • Peut-on appeler le classes adaptées directement (repo.publish(artifact) ou quelque chose comme ça)?

J'ai regardé le code source de PublishToMavenRepository. Il semble que l'action que je veux réaliser est situé dans protected void doPublish.

*Voulais tâches:

  • publishProjectXMergedWarPublicationtomymavenrepo1repository + generatePom
  • publishProjectXJarReleasePublicationtomymavenrepo2repository + generatePom

**Indésirables tâches:

  • publishProjectXMergedWarPublicationtomymavenrepo2repository
  • publishProjectXJarReleasePublicationtomymavenrepo1repository

Gradle fichier:

apply plugin: 'maven-publish'
publishing {
    publications {
        ProjectXMergedWar(MavenPublication) {
            artifact mergeWar
            artifactId = 'projectx'
        }
        ProjectXJarRelease(MavenPublication) {
            artifact releaseJar
            artifactId = 'projectx'
        }
    }
    repositories {
        maven {
            name 'MyMavenRepo1'
            url 'http://artifactory/url/our-snapshot-local'
            credentials { (...) }
        }
        maven {
            name 'MyMavenRepo2'
            url 'http://artifactory/url/our-release-local'
            credentials { (...) }
        }
    }
}

task publish(dependsOn: [
    'generatePomFileForProjectXMergedWarPublication',
    'publishProjectXMergedWarPublicationToMyMavenRepo1Repository'
], overwrite: true) {
    //We override the normal publish which would have tried to publish all combinations of defined
    //publications and repositories:
    //- publishProjectXMergedWarPublicationToMyMavenRepo1Repository      (we use this in normal snapshot publish)
    //- publishProjectXMergedWarPublicationToMyMavenRepo2Repository      (not to be used)
    //- publishProjectXJarReleasePublicationToMyMavenRepo1Repository     (not to be used)
    //- publishProjectXJarReleasePublicationToMyMavenRepo2Repository     (we use this one in publishRelease)
}
task publishRelease(dependsOn: [
    'generatePomFileForProjectXJarReleasePublication',
    'publishProjectXJarReleasePublicationToMyMavenRepo2Repository'
])

Sortie de tâches:

$ ./gradlew tasks

(...)

Publishing tasks
----------------
generatePomFileForProjectXJarReleasePublication - Generates the Maven POM file for publication 'ProjectXJarRelease'.
generatePomFileForProjectXMergedWarPublication - Generates the Maven POM file for publication 'ProjectXMergedWar'.
publishProjectXJarReleasePublicationToMavenLocal - Publishes Maven publication 'ProjectXJarRelease' to the local Maven repository.
publishProjectXJarReleasePublicationToMyMavenRepo1Repository - Publishes Maven publication 'ProjectXJarRelease' to Maven repository 'MyMavenRepo1'.
publishProjectXJarReleasePublicationToMyMavenRepo2Repository - Publishes Maven publication 'ProjectXJarRelease' to Maven repository 'MyMavenRepo2'.
publishProjectXMergedWarPublicationToMavenLocal - Publishes Maven publication 'ProjectXMergedWar' to the local Maven repository.
publishProjectXMergedWarPublicationToMyMavenRepo1Repository - Publishes Maven publication 'ProjectXMergedWar' to Maven repository 'MyMavenRepo1'.
publishProjectXMergedWarPublicationToMyMavenRepo2Repository - Publishes Maven publication 'ProjectXMergedWar' to Maven repository 'MyMavenRepo2'.
publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache.

(...)

Other tasks
-----------
(...)
publish
publishRelease
(...)

OriginalL'auteur HNygard | 2014-01-29