Maven ist ein Build-System für komplexe Projekte.
Artifact manuell installieren#
mvn install:install-file -DgroupId=com.intersult -DartifactId=com.intersult.skin -Dversion=1.0-SNAPSHOT -DgeneratePom=true -Dfile=com.intersult.skin-1.0-SNAPSHOT.jar -Dpackaging=jar
Artifact deployen#
mvn deploy:deploy-file -DgroupId=com.intersult -DartifactId=com.intersult.skin -Dversion=1.0 -Dpackaging=jar -Dfile=target/com.intersult.skin-1.0-SNAPSHOT.jar -Durl=file://W:\deploy\repository.war -DrepositoryId=intersult-repository
C:\Java\workspace\import\agt-war>mvn deploy:deploy-file -DgroupId=ojdbc -DartifactId=ojdbc14 -Dversion=9.0.2.0.0 -Dpackaging=jar "-Dfile=C:\Java\lib\ojdbc14.jar" -DrepositoryId=intersult-repo -Durl=svn:https://intersult.com/svn/import/maven
Zusätzlich kann mit -Dsources=<file> und -Djavadoc=<file> die Sourcen und Javadocs upgeloaded werden.
Falls ein spezieller Wagon verwendet werden soll (Transportschicht für das Protocol-Handling), kann dieser und die Dependencies in <maven-home>/lib abgelegt werden (z.B. maven-svn-wagon-1.4.jar, svnkit-1.3.5.jar).
Glassfish deployen#
Achtung: Die Intersult hat das Maven Glassfish Plugin erweitert. Command line:mvn glassfish:deployPlugin config:
<plugin> <groupId>org.glassfish.maven.plugin</groupId> <artifactId>maven-glassfish-plugin</artifactId> <version>2.1</version> <configuration> <domain> <name>domain1</name> <adminPort>4848</adminPort> </domain> <glassfishDirectory>${env.GLASSFISH_HOME}</glassfishDirectory> <user>admin</user> <adminPassword>adminadmin</adminPassword> <echo>true</echo> </configuration> </plugin>
JBoss deployen#
Command line:mvn jboss:redeployPlugin config:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jboss-maven-plugin</artifactId> <version>1.4</version> <configuration> <hostName>localhost</hostName> <port>8080</port> <serverName>default</serverName> <fileNames> <fileName>${project.build.directory}/${project.build.finalName}.${project.packaging}</fileName> </fileNames> </configuration> </plugin>
Exec plugin#
<pluginRepository> <id>codehaus snapshot repository</id> <url>http://snapshots.repository.codehaus.org/</url> <releases> <enabled>true</enabled> </releases> </pluginRepository> ... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <executions> <execution> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>${env.GLASSFISH_HOME}/bin/asadmin</executable> <arguments> <argument>deploy</argument> <argument>target/test.war</argument> </arguments> </configuration> </plugin> mvn exec:exec
Manual ant task#
<profiles> <profile> <id>echo</id> <activation> <property> <name>command</name> <value>deploy</value> </property> </activation> <build> <defaultGoal>antrun:run</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> <configuration> <tasks> <echo>Hello World!</echo> </tasks> </configuration> </plugin> </plugins> </build> </profile> </profiles> mvn -Dcommand=echo
Ant als Plugin#
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <echo message="${os.family}"/> <echo message="${os.arch}"/> </target> </configuration> </execution> </executions> </plugin>
Links#
Debugging#
Maven Prozesse können debuggt werden, indem statt mvn der Befehl mvnDebug verwendet wird. Maven wartet dann auf Port 8000 auf ein Debugger Attachement.Tests können so nicht debuggt werden, da für sie eine eigene VM erzeugt wird. Dies kann verhindert werden, indem das Surefire-Plugin konfiguriert wird:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <configuration> <forkMode>never</forkMode> </configuration> </plugin>
Allerdings können sich dann Probleme mit dem Classpath ergeben.
Profile unter Hudson aktivieren#
<profile> <id>hudson</id> <activation> <property> <name>BUILD_NUMBER</name> </property> </activation> ... </profile>
Authentication#
Wird auf ein Repository zugegriffen, bei dem Authentifiziert werden muss (z.B. HTTPS, Username, Passwort), kann dies in den settings.xml abgelegt werden. Damit tauchen keine Passwörter in den eingecheckten pom.xml-Dateien auf:<servers> <server> <id>intersult-repo</id> <username>username</username> <password>passwort</password> </server> </servers>
OS Profile#
<profiles> <profile> <id>win-32bit</id> <activation> <os> <family>windows</family> <arch>x86</arch> </os> </activation> <properties> <some.classifier>win-32bit</some.classifier> </properties> </profile> <profile> <id>win-64bit</id> <activation> <os> <family>windows</family> <arch>amd64</arch> </os> </activation> <properties> <some.classifier>win-64bit</some.classifier> </properties> </profile> </profiles>
Proxy#
Für normale Operationen mit Maven reicht ein Proxy-Eintrag im %USERPROFILE%\.m2\settings.xml<proxies> <proxy> <id>[id]</id> <active>true</active> <protocol>http</protocol> <host>[host]</host> <port>[port]</port> <nonProxyHosts>127.0.0.*|localhost|10.1.*</nonProxyHosts> </proxy> </proxies>
Beim Verwenden von Subversion-Operationen, zum Beispiel deploy:deploy-file ist zusätzlich das SVN-Proxy im Subversion unter %APPDATA%\Subversion\servers anzugeben:
[global] http-proxy-host = [host] http-proxy-port = [port] http-proxy-exceptions = 127.0.0.*, localhost, 10.1.*