Einträge der settings.xml als Argument in der command line

Hallo,

ich habe nun schon länger das Netz durchforstet. Ich möchte Properties, die eigentlich in der settings.xml liegen Maven beim Goal deploy in der command line übergeben.

Im speziellen geht es mit um
[XML]
myServerId
username
password
[/XML]

Habe ich etwas übersehen oder geht das nicht?

Gruß und Dank

Hi,

wird IMHO so nicht gehen.

Was willst du erreichen?

Die Frage an sich ist seltsam, das deploy goal holt sich die Daten automatisch wenn das distributionManagement Element in der POM stimmt.

Der Grund ist, dass ich hier ein onDemand CI-Server habe, auf dem ich die settings.xml nicht konfigurieren kann.

Wie übergebe ich sonst Username und Password?

So sieht es in meiner pom.xml aus:

[XML]

sonatype-nexus-snapshots
sonatype-nexus-snapshots
https://oss.sonatype.org/content/repositories/snapshots/


sonatype-nexus-staging
sonatype-nexus-staging
https://oss.sonatype.org/service/local/staging/deploy/maven2/

[/XML]

Vllt. kannst du mit Umgebungsvariablen arbeiten und diese dann referenzieren:
http://maven.apache.org/settings.html

Wie meinst Du das? Hättest Du dafür ein Beispiel?

So wie es eigentlich auch in der verlinkten Seite als Beispiel steht:
${env.HOME} etc. for environment variables

Das kannst du dann natürlich anpassen und beim Start die Umgebungsvariable setzen:

set MY_CUSTOM_SETTING=value
mvn deploy

und in der settings.xml dann mit ${env.MY_CUSTOM_SETTING} referenzieren.

Unter Linux natürlich entsprechend mit export statt set.

Ach so, ja an das habe ich auch gedacht. Doch dann muss ich immer noch den Username und das Passwort irgendwie in der pom.xml unterbringen. Natürlich kann ich die von aussen vorgeben, aber ich weiß nicht, wie ich Maven mitteile, dass er die Credentials nicht aus der settings.xml sondern aus der pom.xml oder per commandline bekommt.

Wieso können die Credentials nicht in der nutzerspezifischen settings.xml stehen? Sind die Zugangsdaten projekt- und nicht nutzerabhängig?

Ich habe bisher keine Möglichkeit, die settings.xml auf dem CI anzupassen. Somit weiß der CI nichts von den Zugangsdaten.

Du könntest eine passende settings.xml mit dem -s parameter an Maven übergeben.

ja, das war mein erster Gedanke. Allerdings kann ich auf dem Server keine Dateien ablegen (jedenfalls habe ich keine Möglichkeit bisher gesehen).

Welcher Ci Server?
Fuer Jenkins gibt es ein Plugin (Config File Provider Plugin) mit dem man Config files (xml, etc. pp.) verwalten kann, die kann man dann im Build Job einsetzen an beliebigen Pfaden.
Andere CI Server bieten vielleicht aehnliches.

Offensichtlich ergibt es wenig Sinn die settings.xml zu den Projektsourcen zu werfen, deswegen schlage ich das gar nicht erst vor :wink:

Ja, das ergibt keinen Sinn, weil es sich um ein OpenSource-Projekt handelt. Bei dem Server handelt es sich um Bamboo Continuous Integration and Deployment Build Server. Und ich dachte, es gibt vielleicht eine schnelle Möglichkeit für mich, den Release-Build zum Laufen zu bekommen. :slight_smile:

Ach Bamboo… hatte nur ein bisschen damit zu tun, war nie wirklich gluecklich damit.
Schnelles Googeln hat auch nix gefunden, sorry, Bamboo ist nicht meine Baustelle :frowning:

Aber eine einfach Möglichkeit das Password irgendwie in der pom.xml unterzubringen gibt es nicht, oder?

Es gibt halt eine einfache Möglichkeit Variablen in Bamboo zu definieren.

Nein, das ist gar nicht vorgesehen.

Die reichen halt leider nicht, sowas wie Config File Management sollte eigentlich zu jedem CI Server gehoeren… sollte.

Danke, nach einigem Suchen bin ich nun auf den Elastic Server gekommen und konnte da eine settings.xml anlegen.

Damit ist meine eigentliche Frage zwar nicht gelöst, das Problem jedoch schon.