[maven-release-plugin] copy for tag uima-build-helper-maven-plugin-3
git-svn-id: https://svn.apache.org/repos/asf/uima/build/tags/uima-build-helper-maven-plugin-3@1306943 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/uima-build-helper-maven-plugin/pom.xml b/uima-build-helper-maven-plugin/pom.xml
new file mode 100644
index 0000000..0b7c2d6
--- /dev/null
+++ b/uima-build-helper-maven-plugin/pom.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.uima</groupId>
+ <artifactId>parent-pom</artifactId>
+ <version>3</version>
+ <relativePath>../parent-pom</relativePath>
+ </parent>
+
+ <artifactId>uima-build-helper-maven-plugin</artifactId>
+ <version>3</version>
+ <packaging>maven-plugin</packaging>
+
+ <inceptionYear>2010</inceptionYear>
+ <name>Apache UIMA ${project.artifactId}</name>
+ <description>Apache UIMA build helper maven plugin</description>
+
+ <url>${uimaWebsiteUrl}</url>
+
+ <!-- Special inheritance note
+ even though the <scm> element that follows is exactly the
+ same as those in super poms, it cannot be inherited because
+ there is some special code that computes the connection elements
+ from the chain of parent poms, if this is omitted.
+
+ Keeping this a bit factored allows cutting/pasting the <scm>
+ element, and just changing the following two properties -->
+ <scm>
+ <connection>
+ scm:svn:http://svn.apache.org/repos/asf/uima/build/tags/uima-build-helper-maven-plugin-3
+ </connection>
+ <developerConnection>
+ scm:svn:https://svn.apache.org/repos/asf/uima/build/tags/uima-build-helper-maven-plugin-3
+ </developerConnection>
+ <url>
+ http://svn.apache.org/viewvc/uima/build/tags/uima-build-helper-maven-plugin-3
+ </url>
+ </scm>
+
+ <properties>
+ <jiraVersion>12319859</jiraVersion>
+ <uimaScmRoot>build</uimaScmRoot>
+ <uimaScmProject>${project.artifactId}</uimaScmProject>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>3.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>3.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>3.0-alpha-2</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>2.9</version>
+ <configuration>
+ <!-- drop maven-plugin per maven conventions -->
+ <goalPrefix>uima-build-helper</goalPrefix>
+ </configuration>
+ <executions>
+ <execution>
+ <id>generated-helpmojo</id>
+ <goals>
+ <goal>helpmojo</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>apache-release</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-changes-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-cli</id>
+ <configuration>
+ <fixVersionIds>${jiraVersion}</fixVersionIds>
+ <sortColumnNames>Status, Key, Type</sortColumnNames>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
diff --git a/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/CopyFromApacheDist.java b/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/CopyFromApacheDist.java
new file mode 100644
index 0000000..d8a1564
--- /dev/null
+++ b/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/CopyFromApacheDist.java
@@ -0,0 +1,262 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.buildhelper;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
+/**
+ * Check if the requested artifact is already in the .m2 repository
+ * if so, just return
+ * else, download the requested artifact from archive.apache.org/dist/uima/
+ *
+ * @goal copy-from-apache-dist
+ * @phase validate
+ *
+ */
+public class CopyFromApacheDist extends AbstractMojo {
+ private static final int MAXRETRIES = 6;
+ private static final int MINTOTALSIZE = 100;
+ /**
+ * Group Id
+ * @parameter default-value="${project.groupId}"
+ */
+ private String groupId;
+
+ /**
+ * Artifact Id
+ * @parameter default-value="uimaj"
+ */
+ private String artifactId;
+
+ /**
+ * Version, e.g. 2.4.0
+ * @parameter
+ * @required
+ */
+ private String version = null;
+
+ /**
+ * Type
+ *
+ * @parameter default-value="zip"
+ */
+ private String type;
+
+ /**
+ * Classifier
+ *
+ * @parameter default-value="bin"
+ */
+ private String classifier;
+
+ /**
+ * Repository
+ *
+ * @parameter default-value="${settings.localRepository}"
+ */
+ private String repository;
+
+ public void execute() throws MojoExecutionException {
+ // repoloc / org/apache/uima / artifactId / version / artifactId - version - classifier . type
+ String targetInLocalFileSystem = String.format("%s/%s/%s/%s/%s-%s%s.%s",
+ repository,
+ groupId.replace('.', '/'),
+ artifactId,
+ version,
+ artifactId,
+ version,
+ (classifier.length() > 0) ? ("-" + classifier) : "",
+ type);
+
+ File targetFile = new File(targetInLocalFileSystem);
+ if (targetFile.exists()) {
+ System.out.format("copy-from-apache-dist returning, file %s exists%n", targetInLocalFileSystem);
+ return;
+ }
+ // http://archive.apache.org/dist/uima/ artifactId - version / artifactId - version - classifier . type
+ String remoteLocation = String.format("http://%s.apache.org/dist/uima/%s-%s/%s-%s%s.%s",
+ "archive",
+// "www",
+ artifactId,
+ version,
+ artifactId,
+ version,
+ (classifier.length() > 0) ? ("-" + classifier) : "",
+ type);
+
+ // read remote file
+ URL remoteURL = null;
+ try {
+ remoteURL = new URL(remoteLocation);
+ } catch (MalformedURLException e) {
+ throw new MojoExecutionException("Bad URL internally: " + remoteLocation, e);
+ }
+
+ FileOutputStream os = null;
+ targetFile.getParentFile().mkdirs();
+ if (targetFile.exists()) {
+ System.out.format(" *** Surprise, file %s exists on 2nd check%n", targetInLocalFileSystem);
+ return;
+ }
+ try {
+ os = new FileOutputStream(targetFile);
+ } catch (FileNotFoundException e) {
+ throw new MojoExecutionException("While creating local file in location " + targetFile.getAbsolutePath(), e);
+ }
+
+ int totalSize = 0;
+ int readSoFar = 0;
+
+ retryLoop:
+ for (int retry = 0; retry < MAXRETRIES; retry ++) {
+
+ HttpURLConnection remoteConnection = null;
+ InputStream is = null;
+
+ try {
+ remoteConnection = (HttpURLConnection) remoteURL.openConnection();
+ if (readSoFar > 0) {
+ String rangespec = String.format("bytes=%d-", readSoFar);
+ System.out.format("Requesting range: %s%n", rangespec);
+ remoteConnection.setRequestProperty("Range", rangespec);
+ }
+ if (totalSize == 0) {
+ totalSize = remoteConnection.getContentLength();
+ if (totalSize < MINTOTALSIZE) {
+ throw new MojoExecutionException(String.format("File size %d too small for %s%n", totalSize, remoteLocation));
+ }
+ }
+
+ is = remoteConnection.getInputStream();
+// if (readSoFar > 0) {
+// System.out.format("Skipping over %,d bytes read so far; this may take some time%n", readSoFar);
+// long skipped = is.skip(readSoFar);
+// if (skipped != readSoFar) {
+// System.out.format("Skipping only skipped %,d out of %,d; retrying", skipped, readSoFar);
+// continue retryLoop;
+// }
+// }
+ } catch (IOException e) {
+ throw new MojoExecutionException("While reading remote location " + remoteLocation, e);
+ }
+
+
+ System.out.format("copy-from-apache-dist file %s to %s%n", remoteLocation, targetInLocalFileSystem);
+ System.out.format("%,12d of %,12d\r", readSoFar, totalSize);
+
+ byte[] buf = new byte[1024*1024]; // buffer size
+ long timeToLog = System.currentTimeMillis();
+ while(true) {
+ int bytesRead;
+ try {
+ bytesRead = is.read(buf);
+ } catch (IOException e) {
+ throw new MojoExecutionException("While reading remote file in location " + remoteLocation, e);
+ }
+ if (bytesRead < 0 ) {
+ if (readSoFar == totalSize) {
+ System.out.format("%,12d of %,12d%nFinished%n", readSoFar, totalSize);
+ break;
+ }
+ System.out.format("%n *** Premature EOF, %,12d read out of %,12d Retry %d%n", readSoFar, totalSize, retry);
+ try {
+ is.close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ if (retry == (MAXRETRIES - 1)) {
+ throw new MojoExecutionException("CopyFromApacheDist retry limit exceeded ");
+ }
+ continue retryLoop;
+ }
+ retry = 0; // reset retry count because we read some good bytes
+ try {
+ os.write(buf, 0, bytesRead);
+ } catch (IOException e) {
+ throw new MojoExecutionException("While writing target file in location " + targetFile.getAbsolutePath(), e);
+ }
+ readSoFar = readSoFar + bytesRead;
+ if (System.currentTimeMillis() - timeToLog > 1000) {
+ timeToLog = System.currentTimeMillis();
+ System.out.format("%,12d of %,12d\r", readSoFar, totalSize);
+ }
+ }
+
+ try {
+ os.close();
+ } catch (IOException e) {
+ throw new MojoExecutionException("While closing target file in location " + targetFile.getAbsolutePath(), e);
+ }
+ try {
+ is.close();
+ } catch (IOException e) {
+ throw new MojoExecutionException("While closing remote file in location " + remoteLocation, e);
+ }
+ break; // out of retry loop
+ }
+ }
+
+// public static void main(String[] args) throws IOException {
+// String remoteLocation = "http://archive.apache.org/dist/uima/uimaj-2.4.0/uimaj-2.4.0-bin.zip.asc";
+// // read remote file
+// URL remoteURL = null;
+// try {
+// remoteURL = new URL(remoteLocation);
+// } catch (MalformedURLException e) {
+// // throw new MojoExecutionException("Bad URL internally: " + remoteLocation, e);
+// }
+//
+// InputStream is = null;
+// try {
+// is = remoteURL.openStream();
+// } catch (IOException e) {
+// e.printStackTrace();
+// // throw new MojoExecutionException("While reading remote location " + remoteLocation, e);
+// }
+// FileOutputStream os = null;
+// try {
+// os = new FileOutputStream("c:/temp/t");
+// } catch (FileNotFoundException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+// byte[] buf = new byte[1024*1024]; // 1 meg buffer size
+// while(true) {
+// int bytesRead = is.read(buf);
+// if (bytesRead < 0) {
+// break;
+// }
+// os.write(buf, 0, bytesRead);
+// }
+// os.close();
+// is.close();
+//
+// }
+}
diff --git a/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/ParseDateTime.java b/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/ParseDateTime.java
new file mode 100644
index 0000000..5fb4fd5
--- /dev/null
+++ b/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/ParseDateTime.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.buildhelper;
+
+import java.text.MessageFormat;
+import java.util.Date;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * Parse the current time value into multiple properties. Each execution gets
+ * the current date and time, and sets 0 or more properties such as
+ * currentTime.year, currentTime.month, etc.
+ *
+ * Users specify the property name and the format of the parsing; multiple sets
+ * of these can be configured to represent the same time.
+ *
+ * @goal parse-date-time
+ * @phase validate
+ */
+public class ParseDateTime extends AbstractMojo {
+ /**
+ * Collection of parseSpecs. Each parseSpec has a name - the property name,
+ * and a format - see "Usage"
+ *
+ * @parameter
+ * @required
+ * @since 1.0.0
+ */
+ private ParseSpec[] parseSpecs;
+
+ /**
+ * The Maven project to analyze.
+ *
+ * @parameter expression="${project}"
+ * @required
+ * @readonly
+ */
+ private MavenProject project;
+
+ public void execute() throws MojoExecutionException {
+
+ Date [] now = new Date[] {new Date()};
+
+ for (int i = 0; i < parseSpecs.length; i++) {
+ ParseSpec ps = parseSpecs[i];
+ String v = MessageFormat.format("{0,date," + ps.getFormat() + "}", now);
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Setting property " +
+ ps.getName() +
+ " with format " +
+ ps.getFormat() +
+ " to value '" +
+ v +
+ "'");
+ }
+ project.getProperties().setProperty(ps.getName(), v);
+ }
+ }
+}
diff --git a/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/ParseSpec.java b/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/ParseSpec.java
new file mode 100644
index 0000000..69b34b6
--- /dev/null
+++ b/uima-build-helper-maven-plugin/src/main/java/org/apache/uima/buildhelper/ParseSpec.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.buildhelper;
+
+public class ParseSpec {
+
+ /**
+ * The name of the property to set
+ *
+ * @parameter
+ * @required
+ * @since 1.0.0
+ */
+ private String name;
+
+ /**
+ * The format string to use
+ *
+ * @parameter
+ * @required
+ * @since 1.0.0
+ */
+ private String format;
+
+ public ParseSpec() {}
+
+ public ParseSpec(String name, String format) {
+ this.name = name;
+ this.format = format;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getFormat() {
+ return format;
+ }
+
+ public void setFormat(String format) {
+ this.format = format;
+ }
+
+}
diff --git a/uima-build-helper-maven-plugin/src/site/apt/index.apt b/uima-build-helper-maven-plugin/src/site/apt/index.apt
new file mode 100644
index 0000000..75a0b79
--- /dev/null
+++ b/uima-build-helper-maven-plugin/src/site/apt/index.apt
@@ -0,0 +1,47 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements. See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership. The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License. You may obtain a copy of the License at
+~~
+~~ http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied. See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+ ------
+ Introduction
+ ------
+
+UIMA Build Helper Plugin
+
+ The uima-build-helper plugin provides a set of goals that do helpful things
+ in Java for the UIMA builds.
+
+* Goals Overview
+
+ The uima-build-helper plugin has one goal:
+
+ *{{{parse-date-time-mojo.html}uima-build-helper:parse-date-time}}
+ captures the current date and time, and then takes a list of
+ specifications defined in
+ the plugin configuration section and for each one sets
+ a specified property to a particular formatting of the current date and time.
+
+ The format of the formatting string is the same as Java's
+ {{{http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html}SimpleDateFormat}}.
+ []
+
+* Usage
+
+ General instructions on how to use the uima-build-helper Plugin can be found on the {{{usage.html}usage page}}.
+
+
+
+
diff --git a/uima-build-helper-maven-plugin/src/site/apt/usage.apt.vm b/uima-build-helper-maven-plugin/src/site/apt/usage.apt.vm
new file mode 100644
index 0000000..48c44d1
--- /dev/null
+++ b/uima-build-helper-maven-plugin/src/site/apt/usage.apt.vm
@@ -0,0 +1,111 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements. See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership. The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License. You may obtain a copy of the License at
+~~
+~~ http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied. See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+ ------
+ Usage
+ ------
+
+Usage
+
+* Generic Plugin configuration information
+
+ See the following links for information about including and configuring plugins in your project:
+
+ *{{{http://maven.apache.org/guides/mini/guide-configuring-plugins.html}Configuring Plugins}}
+
+ *{{{http://maven.apache.org/guides/plugin/guide-java-plugin-development.html}Plugin Development}}
+
+ *{{{http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html}Plugin Prefix}}
+
+* The <<<uima-helper-plugin:parse-date-time>>> mojo
+
+ This goal is bound to the first default lifecycle phase (validate) by default.
+ Configure it in your
+ <<<pom.xml>>>.
+
+ []
+
+ Configure the plugin something like this:
+
++---+
+<project>
+ [...]
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.uima</groupId>
+ <artifactId>uima-build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>get month</id>
+ <goals>
+ <goal>parse-date-time</goal>
+ </goals>
+ <configuration>
+ <parseSpecs>
+ <parseSpec>
+ <propName>[ name of property to set, e.g. my.property ]</propName>
+ <format>[ format string - see below ]</format>
+ <locale>[ optional - a Java locale string ]</locale>
+ </parseSpec>
+ </parseSpecs>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ [...]
+</project>
+
++---+
+
+
+* Format of the parse strings
+
+ The format string can contain arbitrary text, plus special patterns that must look something like
+
+ yyyy or MMMM
+
+ The pattern is one of the patterns defined for
+ date or time in the
+ {{{http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html}SimpleDateFormat}}
+ Java class.
+
+ Spaces and new lines in the pattern are significant, and are copied into the result,
+ except that leading or trailing white-space in the pattern is stripped.
+
+ This means you can write:
++----+
+ <format>
+ yyyy
+ </format>
++----+
+ to get just the 4 digit year formatted.
+
+ Any letters [a-z] or [A-Z] which you want copied into the result must be
+ surrounded by single quotes; otherwise they are interpreted as formatting specifications.
+
+ Some simple examples:
+
++---+
+ <format>yyyy</format> - produces, for example: 2010
+ <format>MMMM</format> - produces, for example, January
+ <format>MMM</format> - produces, for example, Jan
+ <format>MMMM, yyyy</format> - produces, for example, January, 2010
+ <format>YYYY</format> - causes an error - capital "Y" is not a valid formatting character.
++---+
\ No newline at end of file
diff --git a/uima-build-helper-maven-plugin/src/site/site.xml b/uima-build-helper-maven-plugin/src/site/site.xml
new file mode 100644
index 0000000..1d0d172
--- /dev/null
+++ b/uima-build-helper-maven-plugin/src/site/site.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <skin>
+ <groupId>org.apache.maven.skins</groupId>
+ <artifactId>maven-stylus-skin</artifactId>
+ <version>1.1</version>
+ </skin>
+ <body>
+ <menu name="Overview">
+ <item name="Introduction" href="index.html"/>
+ <item name="Goals" href="plugin-info.html"/>
+ <item name="Usage" href="usage.html"/>
+ <!--item name="FAQ" href="faq.html"/-->
+ </menu>
+ </body>
+</project>