<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <packaging>pom</packaging>

  <groupId>org.apache.opennlp</groupId>
  <artifactId>opennlp-site</artifactId>
  <name>Apache OpenNLP Web Site</name>
  <version>0.1-SNAPSHOT</version>

  <build>
    <finalName>opennlp-site</finalName>

    <plugins>
      <plugin>
        <groupId>br.com.ingenieux</groupId>
        <artifactId>jbake-maven-plugin</artifactId>
        <version>0.0.9</version>

        <!-- dependencies -->
        <dependencies>

          <!-- optional : a jbake version -->
          <dependency>
            <groupId>org.jbake</groupId>
            <artifactId>jbake-core</artifactId>
            <version>2.5.1</version>
          </dependency>
          <!-- for freemarker templates (.ftl) -->
          <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.25-incubating</version>
          </dependency>
          <!-- for markdown parsing (.md) -->
          <dependency>
            <groupId>org.pegdown</groupId>
            <artifactId>pegdown</artifactId>
            <version>1.6.0</version>
          </dependency>

          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj</artifactId>
            <version>1.5.5</version>
          </dependency>

        </dependencies>

        <executions>
          <execution>
            <id>default-generate</id>
            <phase>compile</phase>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>


      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
          <execution>
            <id>copy-code-formatter</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/opennlp-site/code-formatter</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/code-formatter</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>timestamp-property</id>
            <goals>
              <goal>timestamp-property</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <name>current.year</name>
              <pattern>yyyy</pattern>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <phase>process-resources</phase>
            <configuration>
              <target>
                <ac:for param="folder" xmlns:ac="antlib:net.sf.antcontrib">
                  <dirset dir="target/distr/">
                    <include name="*"/>
                  </dirset>
                  <sequential>
                    <echo>Copy @{folder} docs</echo>
                    
                    <copy todir="target/opennlp-site/docs">
                        <fileset dir="@{folder}" casesensitive="yes">
                            <include name="**/docs/**/*"/>
                            <exclude name="**/opennlp-uima-descriptors/**"/>
                        </fileset>
                        <mapper type="regexp" from="^.*apache-opennlp-(.*?)/docs/(.*)" to="\1/\2" />
                    </copy>

                    <!-- Fix copyright year for 1.5.3 -->
                    <replaceregexp>
                      <regexp pattern="copy; ,  The Apache Software Foundation"/>
                      <substitution expression="copy; 2011, ${current.year} The Apache Software Foundation"/>
                      <fileset dir="target/opennlp-site/docs/1.5.3/manual">
                        <include name="opennlp.html"/>
                      </fileset>
                    </replaceregexp>

                    <!-- Update copyright year for all releases -->
                    <replaceregexp>
                      <regexp pattern="copy; 2011, \d+ The Apache Software Foundation"/>
                      <substitution expression="copy; 2011, ${current.year} The Apache Software Foundation"/>
                      <fileset dir="target/opennlp-site/docs/">
                        <include name="**/manual/opennlp.html"/>
                      </fileset>
                    </replaceregexp>


                  </sequential>
                </ac:for>
 
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b3</version>
            <exclusions>
              <exclusion>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-nodeps</artifactId>
            <version>1.8.1</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>unpack</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                
                <artifactItem>
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-distr</artifactId>
                  <version>1.5.3</version>
                  <overWrite>false</overWrite>
                  <type>zip</type>
                  <classifier>bin</classifier>
                  <outputDirectory>${project.build.directory}/distr/1.5.3</outputDirectory>
                </artifactItem>

                <artifactItem>
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-distr</artifactId>
                  <version>1.6.0</version>
                  <overWrite>false</overWrite>
                  <type>zip</type>
                  <classifier>bin</classifier>
                  <outputDirectory>${project.build.directory}/distr/1.6.0</outputDirectory>
                </artifactItem>

                <artifactItem>
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-distr</artifactId>
                  <version>1.7.0</version>
                  <overWrite>false</overWrite>
                  <type>zip</type>
                  <classifier>bin</classifier>
                  <outputDirectory>${project.build.directory}/distr/1.7.0</outputDirectory>
                </artifactItem>

                <artifactItem>
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-distr</artifactId>
                  <version>1.7.1</version>
                  <overWrite>false</overWrite>
                  <type>zip</type>
                  <classifier>bin</classifier>
                  <outputDirectory>${project.build.directory}/distr/1.7.1</outputDirectory>
                </artifactItem>

                <artifactItem>
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-distr</artifactId>
                  <version>1.7.2</version>
                  <overWrite>false</overWrite>
                  <type>zip</type>
                  <classifier>bin</classifier>
                  <outputDirectory>${project.build.directory}/distr/1.7.2</outputDirectory>
                </artifactItem>

                <artifactItem>
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-distr</artifactId>
                  <version>1.8.0</version>
                  <overWrite>false</overWrite>
                  <type>zip</type>
                  <classifier>bin</classifier>
                  <outputDirectory>${project.build.directory}/distr/1.8.0</outputDirectory>
                </artifactItem>

              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

</project>
