Donnerstag, 9. April 2009

Neue Maven Version

Seit dem 21.3.2009 ist die Maven Version 2.1.0 verfügbar. Dabei handelt es sich primär um eine Bug-Fix-Version. Aus Performancesicht ist die parallele Auflösung von Artefakten hinzugekommen. Dies sollte in der Regel die Performance steigern. Die komplette Liste ist unter http://maven.apache.org/release-notes.html zu finden.

Mittwoch, 8. April 2009

Integration von Ant in Maven

Oft ensteht der Eindruck, dass man sich für ein Build-Werkzeug entscheiden müsste. Dies ist falsch. Richtig ist, dass sich Ant auch in Maven integrieren lässt und es dafür schon passendes Plugin gibt.

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Hello World</echo>
<buildnumber file="src/main/webapp/WEB-INF/build.number"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>

Ant gibt in der Console bei der Ausführung den Satz Hello World aus und edswird die Build-Nummer hochgezählt. Beides sind Ant Core Tasks (siehe Ant Manual).

In der Console sieht das dann wie folgt aus:

...
[INFO] [antrun:run]
[INFO] Executing tasks
[echo] Hello World
[INFO] Executed tasks
...

Zu beachten ist, dass die Ant-Tasks am Ende der mit ihr assoziierten Phase ausgeführt werden.

Interaktivität mit Ant

Ant kann sehr einfach Benutzereingaben während der Ausführung entgegennehmen. Hier das Beispiel:

<input message="Please enter project name:"
addproperty="project"
defaultvalue="ewindtech"
/>

Bei der Ausfürung geht eine Dialogbox auf in der der Benutzer einen Test eingeben kann, dieser wird dann der Variable projekt zugewiesen. Diese Variable wird durch diesen Ausdruck gleichzeitig erzeugt. Der Default-Wert der Variable ist in diesem Beispiel ewindtech. Mit message wird der Text der Dialogbox vorgegeben.

Dienstag, 7. April 2009

Variablen

Variablen sind sowohl in Ant als auch Maven ein nützliche Sache. In Maven werden sie folgt definiert:

<properties>
<compileSource>1.5</compileSource>
</properties>

Hier wir eine Variable namens compileSource definiert und mit dem Wert 1.5 versehen. Diese kann denn z.B. im Compiler-Plugin eingesetzt werden:

<source>${compileSource}</source>

In Ant sieht das ähnlich aus:

<property name="classes" value="WebContent/WEB-INF/classes" />

Hier wurde eine Variable mit dem Namen classes erstellt und ihr der Wert WebContent/WEB-INF/classes zugewiesen. Benutzt werden kann dann die Variable wie folgt:

<target name="prepare" depends="">
<mkdir dir="${classes}"/>
</target>

Montag, 6. April 2009

Maven Compiler Plugin konfigurieren

Leider wird der Java-Compiler von Maven per default sehr konservativ mit Parametern beschickt. So das es fast immer notwendig ist die Einstellungen anzupassen. Dies passt aus meiner Sicht eigentlich nicht zur Maven-Philosophie.
So muss man die Sprachversion und Encoding des Quelltextes und die Zielsprachversion in fast allen Fällen explizit angeben. Hier ein Beispiel:

<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-compiler-plugin</artifactid>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

Maven 2

Wer mit Maven arbeitet, kommt nicht umhin Jar's zu ins eigenen Projekt zu integrieren, die nicht im zentralen Repository zu finden sind. Um solche fremden Pakete (Jar's) in eigene Repository (/Users/ebert/.m2) zu integrieren benötigt man nicht eine eigene Maven-Installation. Klassischer Wiese braucht man eine Maven-Installation und führt dann in der Shell folgenden Befehl aus: mvn install:install-file -DgroupId=java.plugin -DartifactId=plugin -Dversion=jre-1.5 -Dpackaging=jar -Dfile=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home/lib/plugin.jar -- jetzt ist das betreffende Jar registriert.
Wenn man mit Eclipse arbeitet kann man das auch ohne zweite Maven-Installation machen. Eclipse bringt Maven schon mit. So kann man z.B: install:install-file -DgroupId=java.plugin -DartifactId=plugin -Dversion=jre-1.5 -Dpackaging=jar -Dfile=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home/lib/plugin.jar direkt im Run-Dialog unter Goals von Maven eingeben. Dieser Dialog ist eigentlich nicht für diese Verwendung gedacht, funktioniert aber.