Friday, December 1, 2006

Maven 2 Quick Guide

Maven 2 is a project management tool that you can use for building, deploying, configuring, documenting, dependency management, etc. It's not just for Java, it will also build many other languages and you can build a plugin to support any language you like.

First create a new project:

mvn archetype:create -DgroupId=my.org -DartifactId=myapp

groupId is whatever you want, it's sort of like a package name or namespace. artifactId is probably your application name, a directory with this value will be created and your final build will be named this value.

Inside the directory just created you will find the src dir. If you are developing a java app, put all your code under src/main/java. There will be some generated code in src/main/java and src/test/java, you can delete it or ignore it.

The easy way to get all your external jar files into your project is to set up your own repository. It can be a local dir, or be hosted with apache. Just make a directory somewhere and start putting jar files in your repository with this command:

mvn deploy:deploy-file -DgroupId=mailapi -DartifactId=smtp \
-Dversion=1.4 -Durl=file:///path/to/repo \
-Dpackaging=jar -Dfile=smtp.jar

If you have ssh keys setup, you can use scp in the url also.
Now you have a repository you can reference in your project. Open pom.xml and add the new repository to your project:

<repositories>
<repository>
<name>myname</name>
<id>someid</id>
<url>file:///path/to/repo</url>
</repository>
</repositories>

Now you can reference your jar files as dependencies in pom.xml.

<dependency>
<groupId>mailapi</groupId>
<artifactId>smtp</artifactId>
<version>1.4</version>
</dependency>

If you omit version, it will use the newest version available.
Now to you can use simple commands to build your application:

mvn compile

Only compiles the source code.

mvn install

Compiles and packages your project then installs it in your local repository.

mvn war:war

Builds a war file of your application, including everything from src/main/webapp and your packaged project.

Creating a web site for your project is really easy, you can use an xml format (xdoc), that you can embed html into, or you can use a wiki like format (apt). You need a site.xml file, put it in src/site. Put your xml or apt files in src/site/xdoc and src/site/apt repectively. Here is an example site.xml and xdoc file:

<!-- site.xml -->
<project name="My Project">
<bannerLeft>
<name>banner</name>
<src>relative/path/to/image</src>
<href>http://my.home.page</href>
</bannerLeft>
<body>
<links>
<item name="orglink" href="http://my.org" target="_blank"/>
</links>
<menu name="About My Project">
<item name="Introduction" href="index.html"/>
<item name="Getting Started" href="getting-started.html"/>
</menu>
</body>
</project>

<!-- index.xml -->
<document>
<properties>
<title>My Project</title>
<sub-title>Welcome to My Project</sub-title>
<authors>
<person name="Brice Lambi" email="bricelambi@my.org"/>
</authors>
</properties>
<body>
<section name="Welcome to My Project">
<p>Maven is cool!</p>
</section>
</body>
</document>

You can build your site with the command:

mvn site:site

Check out the maven documentation for more info: http://maven.apache.org

No comments: