<!--
  ~ 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>
    <parent>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-parent</artifactId>
        <version>1.5.2</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>

    <groupId>org.apache.axis2</groupId>
    <artifactId>documentation</artifactId>
    <name>Apache Axis2 - Documentation</name>
    <description>Apache Axis2 Documentation</description>
    <packaging>pom</packaging>


    <dependencies>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jaxws_2.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.fastinfoset</groupId>
            <artifactId>FastInfoset</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tribes</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>juli</artifactId>
        </dependency>
        <dependency>
            <groupId>xalan</groupId>
            <artifactId>xalan</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jettison</groupId>
            <artifactId>jettison</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jibx</groupId>
            <artifactId>jibx-bind</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jibx</groupId>
            <artifactId>jibx-run</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-launcher</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.schema</groupId>
            <artifactId>XmlSchema</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.neethi</groupId>
            <artifactId>neethi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
        <dependency>
            <groupId>${stax.impl.groupid}</groupId>
            <artifactId>${stax.impl.artifact}</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-activation_1.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-javamail_1.4_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-annotation_1.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.woden</groupId>
            <artifactId>woden-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>rhino</groupId>
            <artifactId>js</artifactId>
        </dependency>
        <dependency>
            <groupId>bsf</groupId>
            <artifactId>bsf</artifactId>
        </dependency>
        <dependency>
            <groupId>jalopy</groupId>
            <artifactId>jalopy</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.woden</groupId>
            <artifactId>woden-impl-dom</artifactId>
            <version>${woden.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>xerces</groupId>
                    <artifactId>xercesImpl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xml-apis</groupId>
                    <artifactId>xml-apis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
        </dependency>
        <dependency>
            <groupId>xml-resolver</groupId>
            <artifactId>xml-resolver</artifactId>
        </dependency>
    </dependencies>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5.2/modules/documentation</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5.2/modules/documentation</developerConnection>
        <url>http://svn.apache.org/viewvc/axis/axis2/java/core/tags/v1.5.2/modules/documentation</url>
    </scm>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <configuration>
                    <xdocDirectory>${basedir}/xdocs</xdocDirectory>
                    <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory>
                </configuration>
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>site</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <id>service-module-list-generation</id>
                        <phase>package</phase>
                        <configuration>
                            <tasks>
                                <copy toDir="target/site/@axis2_version_dir@">
                                    <fileset dir="xdocs/@axis2_version_dir@">
                                        <include name="**/*.png" />
                                        <include name="**/*.gif" />
                                        <include name="**/*.jpg" />
                                    </fileset>
                                </copy>
                                <mkdir dir="${basedir}/target/apidocs" />
                                <javadoc packagenames="org.apache.axis2.*" destdir="${basedir}/target/apidocs" classpathref="maven.compile.classpath" maxmemory="128m" author="true" version="true" use="true" windowtitle="Axis2 API" doctitle="Axis2" bottom="Copyright © 2007 Apache Web Services Project. All Rights Reserved.">
                                    <packageset dir="../../modules/kernel/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/adb/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/adb-codegen/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/addressing/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/clustering/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/codegen/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/distribution/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/fastinfoset/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/java2wsdl/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/jaxbri/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/jaxws/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/jibx/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/json/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/metadata/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/mex/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/mtompolicy/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/ping/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/saaj/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/scripting/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/soapmonitor/module/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/soapmonitor/servlet/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/spring/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/webapp/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/xmlbeans/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                    <packageset dir="../../modules/corba/src" defaultexcludes="yes">
                                        <include name="org/apache/axis2/**" />
                                        <include name="javax/**" />
                                    </packageset>
                                </javadoc>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>package</id>
                        <phase>process-resources</phase>
                        <configuration>
                            <tasks>
                                <copy toDir="target/xdocs-changed/${docs.folder.version}">
                                    <fileset dir="xdocs/@axis2_version_dir@">
                                        <exclude name="**/*.xml" />
                                    </fileset>
                                </copy>
                                <filter filtersfile="xdocs/dynamic-labels.properties" />
                                <copy toDir="target/xdocs-changed/${docs.folder.version}" filtering="on" overwrite="true">
                                    <globmapper from="*.xml" to="*.xml" />
                                    <fileset dir="xdocs/@axis2_version_dir@" />
                                </copy>
                                
                                <copy toDir="target/xdocs-changed" filtering="on" overwrite="true">
                                    <globmapper from="*.xml" to="*.xml" />
                                    <fileset dir="xdocs">
                                        <exclude name="@axis2_version_dir@/**" />
                                        <exclude name="**/*.gif" />
                                        <exclude name="**/*.jpg" />
                                        <exclude name="**/*.png" />
                                    </fileset>
                                </copy>
                                
                                <copy toDir="target/xdocs-changed" filtering="off" overwrite="true">
                                    <fileset dir="xdocs">
                                        <exclude name="@axis2_version_dir@/**" />
                                        <include name="**/*.gif" />
                                        <include name="**/*.jpg" />
                                        <include name="**/*.png" />
                                        <include name="**/*.css" />
                                        <include name="**/*.xsd" />
                                        <include name="**/*.cgi" />
                                        <include name="**/*.properties" />
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>rename-site</id>
                        <phase>install</phase>
                        <configuration>
                            <tasks>
                            <filter filtersfile="xdocs/dynamic-labels.properties" />
                            <copy toDir="target/site2" filtering="on" overwrite="true">
                                <globmapper from="*.html" to="*.html" />
                                <fileset dir="target/site">
                                    <include name="**/*.html" />
                                </fileset>
                            </copy>
                            <copy toDir="target/site2" filtering="off" overwrite="true">
                                <fileset dir="target/site">
                                    <exclude name="**/*.html" />
                                </fileset>
                            </copy>    
                            <delete dir="target/site" />
                            <mkdir dir="target/site" />
                            <copy toDir="target/site" filtering="off" overwrite="true">
                                <fileset dir="target/site2" />
                            </copy>    
                            <delete dir="target/site2" />
                            <delete dir="target/xdocs-changed" />
                            
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <activation>
                <property>
                    <name>site-stage</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-site-plugin</artifactId>
                        <configuration>
                            <xdocDirectory>${basedir}/xdocs</xdocDirectory>
                            <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>deploy</phase>
                                <goals>
                                    <goal>stage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
