More often than not today I start my Java projects using an Apache Maven archetype. Whether it be for an Apache CXF based web service, a simple web application or some sort of service most are started from an archetype.
However pretty much every project I need to add my secret project ingredients, this typically starts with a couple of key plug-ins:
- maven-checkstyle-plugin – I really like to know when my code is a mess, even if it does annoy some people.
- maven-license-plugin – Again I like stuff neat so getting everything tagged under a license is pretty important.
I have extracted a sample of my default configuration to illustrate how these plug-ins are configured in the pom.xml.
<build>
<plugins>
<plugin>
<groupId>com.mycila.maven-license-plugin</groupId>
<artifactId>maven-license-plugin</artifactId>
<configuration>
<properties>
<owner>Mark Wolfe</owner>
<year>${project.inceptionYear}</year>
<email>mark.wolfe@wolfe.id.au</email>
</properties>
<header>${basedir}/src/main/etc/header.txt</header>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<consoleOutput>true</consoleOutput>
<configLocation>${basedir}/src/main/etc/checkstyle.xml</configLocation>
<enableRulesSummary>true</enableRulesSummary>
</configuration>
</plugin>
</plugins>
</reporting>
At a minimum that gets me up and running with plug-ins, next thing I like to tidy up is the header of the pom file. This typically starts by updating all the developer information setting my website URL and adding my details.
<inceptionYear>2010</inceptionYear>
<organization>
<name>Mark Wolfe</name>
<url>http://www.wolfe.id.au/</url>
</organization>
<developers>
<developer>
<name>Mark Wolfe</name>
<email>mark@wolfe.id.au</email>
<timezone>+10</timezone>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>Apache 2</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
So that pretty much completes my maven kick start configuration post, for more detailed example see my fxAssetman muck around project on github.