<?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>
    <parent>
        <groupId>org.apache.synapse</groupId>
        <artifactId>synapse</artifactId>
        <version>1.2</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <groupId>org.apache.synapse</groupId>
    <artifactId>synapse-war</artifactId>

    <name>Apache Synapse - Web Application</name>
    <description>Apache Synapse - Web Application</description>
    <packaging>war</packaging>
    <build>
        <finalName>synapse</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.0-alpha-1</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.axis2</groupId>
                                    <artifactId>addressing</artifactId>
                                    <version>${addressing.version}</version>
                                    <type>mar</type>
                                    <outputDirectory>target/temp/lib</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.wso2.mercury</groupId>
                                    <artifactId>mercury-mar</artifactId>
                                    <version>${mercury.version}</version>
                                    <type>mar</type>
                                    <outputDirectory>target/temp/lib</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.rampart</groupId>
                                    <artifactId>rampart</artifactId>
                                    <version>${rampart.version}</version>
                                    <type>mar</type>
                                    <outputDirectory>target/temp/lib</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <warName>synapse</warName>
                    <archive>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                    <outputDirectory>target</outputDirectory>
                    <webResources>
                        <resource>
                            <directory>repository</directory>
                            <targetPath>WEB-INF/repository</targetPath>
                            <excludes>
                                <exclude>conf/web.xml</exclude>
                                <exclude>conf/axis2.xml</exclude>
                                <exclude>conf/synapse.xml</exclude>
                            </excludes>
                        </resource>
                        <!--<resource>-->
                            <!--<directory>repository/conf/sample/resources/misc/client-->
                            <!--</directory>-->
                            <!--<targetPath>samples/axis2Client/client_repo/conf</targetPath>-->
                            <!--<includes>-->
                                <!--<include>axis2.xml</include>-->
                            <!--</includes>-->
                        <!--</resource>-->
                        <!--<resource>-->
                            <!--<directory>repository/conf/sample/resources/misc/server-->
                            <!--</directory>-->
                            <!--<targetPath>samples/axis2Server/repository/conf</targetPath>-->
                            <!--<includes>-->
                                <!--<include>axis2.xml</include>-->
                            <!--</includes>-->
                        <!--</resource>-->
                        <resource>
                            <directory>modules/core/src/main/resources</directory>
                            <targetPath>WEB-INF/classes</targetPath>
                            <includes>
                                <include>log4j.properties</include>
                                <include>synapse.properties</include>
                                <include>identity.jks</include>
                                <include>trust.jks</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>modules/core/target</directory>
                            <targetPath>WEB-INF/repository/modules</targetPath>
                            <includes>
                                <include>synapse-${synapse.version}.mar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>modules/war/target/temp/lib</directory>
                            <targetPath>WEB-INF/repository/modules</targetPath>
                            <includes>
                                <include>addressing-${addressing.version}.mar</include>
                                <include>rampart-${rampart.version}.mar</include>
                                <include>mercury-mar-${mercury.version}.mar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>src/main/release/docs</directory>
                            <targetPath>docs</targetPath>
                            <includes>
                                <include>release_notes.txt</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>src/site/resources</directory>
                            <targetPath>docs</targetPath>
                            <includes>
                                <include>Synapse_Configuration_Language.html</include>
                                <include>Synapse_Samples.html</include>
                                <include>Synapse_Samples_Setup.html</include>
                                <include>Synapse_QuickStart.html</include>
                                <include>Synapse_Extending.html</include>
                            </includes>
                        </resource>
                        <!--<resource>-->
                            <!--<directory>modules/samples/services</directory>-->
                            <!--<targetPath>samples/axis2Server/src</targetPath>-->
                        <!--</resource>-->
                        <!--<resource>-->
                            <!--<directory>modules/samples/src/main/java</directory>-->
                            <!--<targetPath>samples/axis2Client/src</targetPath>-->
                            <!--<excludes>-->
                                <!--<exclude>**/target</exclude>-->
                                <!--<exclude>**/target/**/*</exclude>-->
                            <!--</excludes>-->
                        <!--</resource>-->
                        <!--<resource>-->
                            <!--<directory>modules/samples/src/main/scripts</directory>-->
                            <!--<targetPath>samples/axis2Client</targetPath>-->
                            <!--<excludes>-->
                                <!--<exclude>custom.sh</exclude>-->
                                <!--<exclude>custom.bat</exclude>-->
                                <!--<exclude>axis2server.sh</exclude>-->
                                <!--<exclude>axis2server.bat</exclude>-->
                            <!--</excludes>-->
                        <!--</resource>-->
                        <!--<resource>-->
                            <!--<directory>modules/samples/src/main/scripts</directory>-->
                            <!--<targetPath>samples/axis2Server</targetPath>-->
                            <!--<includes>-->
                                <!--<include>axis2server.sh</include>-->
                            <!--</includes>-->
                        <!--</resource>-->
                        <!--<resource>-->
                            <!--<directory>modules/samples/src/main/scripts</directory>-->
                            <!--<targetPath>samples/axis2Server</targetPath>-->
                            <!--<includes>-->
                                <!--<include>axis2server.bat</include>-->
                            <!--</includes>-->
                        <!--</resource>-->
                        <resource>
                            <directory>modules/core/target</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>synapse-core-${synapse.version}.jar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>modules/samples/target</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>synapse-samples-${synapse.version}.jar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>modules/extensions/target</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>synapse-extensions-${synapse.version}.jar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>modules/transports/target</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>synapse-transports-${synapse.version}.jar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>repository/conf</directory>
                            <targetPath>WEB-INF/conf</targetPath>
                            <includes>
                                <include>axis2.xml</include>
                                <include>synapse.xml</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>repository/conf</directory>
                            <targetPath>WEB-INF</targetPath>
                            <includes>
                                <include>web.xml</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>
