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.
[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:
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:
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?
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.
[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):
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
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: