[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>