Maven site-deploy per SSH ohne Benutzereingabe

Grizzly

Top Contributor
Hallo zusammen, :)

ich möchte die Dokumentation sowie einige andere Dinge aus dem Reporting von Maven (bspw. Ergebnis der JUnit Tests, Javadoc, usw.) auf einen Server hochladen. Aus verschiedenen Erwägungen habe ich mich für SSH entschieden.
  • Es wird Maven 3.0.4 verwendet.
  • Als Build Server wird Jenkins unter Windows Server 2008 R2 verwendet.
  • Für das Hosten der Reports wird ein Ubuntu Linux 14.04 LTS mit installierten Apache Web Server verwendet. OpenSSH ist installiert.
settings.xml:
[XML]<settings>
[...]
<servers>
<server>
<id>marketplace</id>
<username><!-- Der Benutzername --></username>
<password><!-- Das Passwort im Klartext --></password>
<configuration>
<knownHostsProvider implementation="org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider">
<hostKeyChecking>no</hostKeyChecking>
</knownHostsProvider>
</configuration>
</server>
</servers>
[...]
</settings>[/XML]

pom.xml:
[XML]<project>
[...]
<artifactId>test-project</artifactId>
<name>Test Project</name>
<url>http://<!-- Adresse des Web Servers -->/test-project/
[...]
<build>
<pluginManagement>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<configuration>
<locales>en</locales>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</plugin>
[...]
</plugins>
</pluginManagement>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
</plugin>
[...]
</plugins>
</build>
[...]
<reporting>
<plugins>
[...]
</plugins>
</reporting>
[...]
<distributionManagement>
<site>
<id>marketplace</id>
<url>scp://<!-- Adresse des Web Servers -->/var/www/html/test-project/</url>
</site>
</distributionManagement>
[...]
</project>[/XML]
Die Lösung über wagon-ssh habe ich aus dem Internet. Leider führt dies in meiner lokalen Eclipse Umgebung dazu, dass beim Ziel "site-deploy" eine Benutzereingabe notwendig wird, wenn der Abschnitt <configuration> in der settings.xml nicht gesetzt ist:
Code:
[INFO] --- maven-site-plugin:3.3:deploy (default-deploy) @ test-project ---
The authenticity of host '[Adresse des Web Servers]' can't be established.
RSA key fingerprint is [RSA Fingerprint].
Are you sure you want to continue connecting? (yes/no):
Wenn ich dem zustimme, wird in meinem Windows Profil Verzeichnis ein Verzeichnis ".ssh" angelegt und dort eine Datei "known_hosts", welche den akzeptierten Fingerprint für die Adresse des Web Servers enthält.
Leider kann ich dies so nicht in Jenkins verwenden bzw. habe auch das Problem, dass dieser in einem Tomcat läuft, welcher ein Systemkonto als Benutzer verwendet. Und da weiß ich schlichtweg nicht, wo der sein Profil Verzeichnis hat. :(

Deswegen habe ich weitergesucht und die Lösung mit dem <configuration> Abschnitt gefunden, welche Ihr auch oben seht. Leider funktioniert dies nicht:
Code:
[INFO] --- maven-site-plugin:3.3:deploy (default-deploy) @ test-project ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.105s
[INFO] Finished at: Thu Jun 12 09:48:18 CEST 2014
[INFO] Final Memory: 30M/505M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:deploy (default-deploy) on project test-project: Unable to configure Wagon: 'scp': While configuring wagon for 'marketplace': Unable to apply wagon configuration. ClassNotFoundException: Class name which was explicitly given in configuration using 'implementation' attribute: 'org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider' cannot be loaded -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Ich habe mal nachgeschaut: Die Klasse NullKnownHostProvider liegt im JAR wagon-ssh-common, von welcher wagon-ssh abhängt. Sprich eigentlich müsste die Klasse zur Verfügung stehen.

Aus lauter Verzweiflung habe ich die wagon-ssh-common auch mal in den <dependencies> Abschnitt des maven-site-plugin aufgenommen. Das hat aber auch keine Besserung gebracht. :(

Irgendwelche Vorschläge?
 
Zuletzt bearbeitet:

Grizzly

Top Contributor
Ich habe gestern noch einen anderen Ansatz probiert:

Anstatt des <configuration> Abschnitts in der settings.xml habe ich meine lokale know_hosts Datei von
Code:
C:\Users\[MEIN_BENUTZER]\.ssh\known_hosts
auf den Server nach:
Code:
C:\Windows\system32\config\.ssh\known_hosts
kopiert. Ich habe im Internet gelesen, dies das Profil Verzeichnis des lokalen Systemkontos sei, welches u.a. von Tomcat benutzt wird. Und da Jenkins über Tomcat betrieben wird, wird dieser sowie Maven auch über dieses Benutzerkonto betrieben. Sprich dann sollte Maven auch diesen Ordern als "Home" Ordner bzw. Profil Verzeichnis benutzen.

Unglücklicherweise hat das nicht funktioniert: Im Build Log von Jenkins sehe ich, dass wagon-ssh versucht eine Benutzereingabe zu bekommen, ob dem SHA RSA Fingerprint bzw. der Verbindung vertraut werden soll oder nicht. Das wiederholt sich ständig bis man den Build Prozess abbricht. Leider verrät einem wagon-ssh auch nicht, wo er die known_hosts Datei sucht bzw. erwartet.

Am Einfachsten wäre, wenn man den Pfad der known_hosts Datei irgendwo in der settings.xml angeben könnte. Aber dazu habe ich (bisher) leider nichts gefunden. :(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Maven Maven Site bleibt bei Abhängigkeiten hängen. Tools - Maven, Gradle, Ant & mehr 2
D HTML- Site öffnen Tools - Maven, Gradle, Ant & mehr 15
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
D [ERLEDIGT] Probleme mit Authorization in Nexus und mvn deploy plugin Tools - Maven, Gradle, Ant & mehr 1
B Applet: com.sun.deploy.security.BlockedException :-( Tools - Maven, Gradle, Ant & mehr 0
L Remote-Deploy mit Maven?! Tools - Maven, Gradle, Ant & mehr 4
musiKk Maven Deploy von Bundles mit Abhängigkeiten an nicht-Bundles Tools - Maven, Gradle, Ant & mehr 5
reibi Maven "mvn deploy" in offentliches REPO verhindern Tools - Maven, Gradle, Ant & mehr 5
B Maven deploy-file frage Tools - Maven, Gradle, Ant & mehr 6
P [Maven2] Deploy auf Artifactory mit LDAP Authentication Tools - Maven, Gradle, Ant & mehr 10
ModellbahnerTT Unterschied build und deploy Tools - Maven, Gradle, Ant & mehr 3
H Maven NetBeans Java Application ohne Manifest-Datei Tools - Maven, Gradle, Ant & mehr 7
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
R Webstart Java 11 ohne Web Start Tools - Maven, Gradle, Ant & mehr 5
K Eine ausführbare exe ohne installiertes JRE möglich? Tools - Maven, Gradle, Ant & mehr 4
S Installer ohne JAR Tools - Maven, Gradle, Ant & mehr 6
reibi Maven Build ohne netz Tools - Maven, Gradle, Ant & mehr 2
M Versionierung mit GIT ohne online Repository Tools - Maven, Gradle, Ant & mehr 6
F Problem beim Kompilieren ohne IDE Tools - Maven, Gradle, Ant & mehr 5
-horn- Pures JRE ohne Ballast? Für BOINC-Projekt Tools - Maven, Gradle, Ant & mehr 4
P Update-Mechanismus ohne Webstart Tools - Maven, Gradle, Ant & mehr 9
A Applet Maus Koordinaten ohne MouseMotionListener Tools - Maven, Gradle, Ant & mehr 3
S Javachats nutzen ohne Websites zu betreten Tools - Maven, Gradle, Ant & mehr 3
G Chat ohne ständig laufenden Chatserver Tools - Maven, Gradle, Ant & mehr 5
M Alternativtext bei Browser ohne Java? Tools - Maven, Gradle, Ant & mehr 3
S Applet signieren ohne Jarsigner Tools - Maven, Gradle, Ant & mehr 2
C Java Bean ohne BeanBuilder Tools - Maven, Gradle, Ant & mehr 5

Ähnliche Java Themen

Neue Themen


Oben