# Jenkins/Gradle maven-publish Problem



## Dagobert (10. Mai 2018)

Hallo Leute,
ich habe ein Problem an dem ich mir jetzt seit einigen Stunden die Zähne ausbeiße, ohne nur einen Schritt weiter zu sein.

Ich  möchte gerade mit Jenkins eine CI Pipeline erstellen. Als Build-System benutze ich Gradle.
Eigentlich war das bis jetzt auch überschaubar, bis ich mich entschlossen die Artefakte mit Gradle an ein Nexus3 zu übertragen. Dies funktioniert lokal ganz gut. Ich habe die Anmeldedaten in der lokalen gradle.properties hinterlegt.

Das vorgehen möchte ich im Jenkins ungerne wiederholen. Dort hat ich die Creds im Jenkins selbst gespeichert. In der Pipeline würde ich sie gerne als Parameter an das Gradle-Script übergeben:

```
stage('Publish') {
    withCredentials([usernamePassword(credentialsId: 'nexus', passwordVariable: 'NEXUS_PASSWORD', usernameVariable: 'NEXUS_USER')]) {
        sh './gradlew -PmavenUser=$NEXUS_PASSWORD -PmavenPassword=$NEXUS_USER meiner'
    }
}
```

Das dazugehörigen Gradle-File sieht wie folgt aus:

```
apply plugin: 'java'
apply plugin: 'maven-publish'

group = 'de.foodchecker'
version = '0.1-SNAPSHOT'

publishing {
    publications {
        core(MavenPublication) {
            from components.java
        }
    }

    repositories {
        maven {
            credentials {
                username $mavenUser
                password $mavenPw
            }
            if (project.version.endsWith("-SNAPSHOT")) {
                url "http://127.0.0.1:8081/repository/maven-snapshots/"
            } else {
                url "http://127.0.0.1:8081/repository/maven-releases/"
            }
        }
    }
}
```

Leider wird der publish-Teil beim starten von Gradle ausgeführt (egal welcher tasks).
Jetzt zu meiner eigentlich "einfachen" frage. Wie unterbinde ich das? Wie kann ich es hinbekommen das der Teil wirklich nur ausgeführt wird, wenn ich den passenden Task aufrufe?

lg. Fabian


----------



## Dagobert (13. Mai 2018)

Hat noch niemand hier ein ähnliches Problem gehabt?


----------

