Your daily mug of code

things no one want’s to know – except me

About

der Blog von Matthias Müller (27), Java-Entwickler mit einer Vorliebe für Filme, Serien und groben Unfug

Wie ich gerlent habe, unterscheidet Maven bzw das Surefire-Plugin zwischen den Optionen

-Dmaven.test.skip=true

und

-DskipTests

Während

maven.test.skip

die Test-Sourcen komplett ignoriert, werden sie bei

 skipTests

immerhin kompiliert und ggf. das Test-Jar erzeugt. Das kann einen unterschied machen, besonders dann, wenn sie nämlich nicht kompilierbar sind.

Um das Test-Jar automatisch zu erzeugen, folgendes zur pom.xml hinzufügen:

  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.2</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>

Will man das so erstellte Test-Jar als dependency referenzieren, sieht das so aus:

<dependency>
	<groupId>com.example</groupId>
	<artifactId>foobar</artifactId>
	<type>test-jar</type>
	<version>1.0</version>
	<scope>test</scope>
</dependency>

Quellen:
http://maven.apache.org/guides/mini/guide-attached-tests.html
http://maven.apache.org/plugins/maven-surefire-plugin/examples/skipping-test.html

Ein korrrekte SSL-Konfiguration des Tomcat vorausgesetzt (siehe http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html), kann man mit folgendem Fragment in der web.xml eine automatische umleitung vom HTTP- auf den HTTPS-Port erzwingen:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Secure</web-resource-name>
      <url-pattern>/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
    </web-resource-collection>
    <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL
        </transport-guarantee>
     </user-data-constraint>
</security-constraint>

Lange habe ich nach einer Möglichkeit gesucht, Maven-basierte Webprojekte mit einem Klick deployen zu können. Nun habe ich sie gefunden. Das Geheimnis liegt in einer Option, die man beim Aufruf an das Eclipse-Plugin mitgibt:

mvn -Dwtpversion=1.5 eclipse:eclipse

Auf diese Weise erhält das Projekt die notwendigen Project-Natures. Nun kann man die Anwendung starten, indem man auf dem Root-Ordner rechtsklickt und

Run as -&gt; Run on Server

auswählt. nun muss man noch eine Tomcat-Konfiguration wählen und fertig ist die Laube. Gff. noch mit Window -> Show View -> Other -> Servers die Server-View aktivieren, und mann kann mit einem klick auf den Run-Knopf die Anwendung starten.

Nachtrag:Die Option

wtpversion

kann man auch in der pom.xml bei der Plugin-Konfiguration hinterlegen, das ist etwas komfortabler:

&lt;br /&gt;&lt;plugin&gt;&lt;br /&gt;	&lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;&lt;br /&gt;	&lt;artifactid&gt;maven-eclipse-plugin&lt;/artifactid&gt;&lt;br /&gt;	&lt;configuration&gt;&lt;br /&gt;		&lt;wtpversion&gt;1.5&lt;/wtpversion&gt;&lt;br /&gt;		&lt;additionalprojectfacets&gt;&lt;br /&gt;			&lt;jst.jsf&gt;1.2&lt;/jst.jsf&gt;&lt;br /&gt;			&lt;jsf.facelet&gt;1.0&lt;/jsf.facelet&gt;&lt;br /&gt;		&lt;/additionalprojectfacets&gt;&lt;br /&gt;	&lt;/configuration&gt;&lt;br /&gt;&lt;/plugin&gt;&lt;br /&gt;