<?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">  
  <parent> 
    <groupId>org.apache.npanday</groupId>
    <artifactId>npanday-dist-parent</artifactId>  
    <version>1.5.0-incubating-SNAPSHOT</version> 
  </parent>  
  <modelVersion>4.0.0</modelVersion>  
  <artifactId>npanday-repository-builder</artifactId>  
  <packaging>pom</packaging>
  <name>NPanday :: Repository Builder</name>  
  <dependencies> 
    <!--
    NPANDAY PLUGINS
    -->
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-compile-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-aspx-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-fxcop-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-install-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-link-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-mojo-generator-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-repository-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-resgen-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-resolver-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-test-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-vsinstaller-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-webapp-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-wsdl-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-xsd-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>maven-xsp-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>wix-maven-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>custom-lifecycle-maven-plugin</artifactId>
      <version>1.4.1-incubating-SNAPSHOT</version>
    </dependency>

    <!--
    NPANDAY NETPLUGINS
     -->  
    <dependency> 
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>NPanday.Plugin.Addin.JavaBinding</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>NPanday.Plugin.Devenv.JavaBinding</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>NPanday.Plugin.Settings.JavaBinding</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>
    <dependency> 
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>NPanday.Plugin.SysRef.JavaBinding</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>
    <dependency> 
      <groupId>org.apache.npanday.plugins</groupId>
      <artifactId>NPanday.Plugin.Msbuild.JavaBinding</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>

    <!--
    NPANDAY ARCHETYPES
    -->
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>maven-archetype-dotnet-simple</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>maven-archetype-netexecutable</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>maven-archetype-vb-simple</artifactId>  
      <version>1.4.1-incubating-SNAPSHOT</version> 
    </dependency>
  </dependencies>  
  <build>
    <plugins>   
      <!-- Incorporate the .NET repository just built -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <id>dotnet</id>
            <phase>process-resources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/dotnet</outputDirectory>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.npanday</groupId>
                  <artifactId>dotnet-repository-builder</artifactId>
                  <version>${project.version}</version>
                  <type>tar.gz</type>
                  <classifier>bin</classifier>
                </artifactItem>
              </artifactItems>
            </configuration>
            <goals>
              <goal>unpack</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-3</version>
        <configuration>
          <descriptor>src/main/assembly/repo.xml</descriptor>
          <finalName>repository</finalName>
          <attach>false</attach>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>package</phase>
            <configuration>
              <tasks>
                <copy file="${basedir}/../../LICENSE.txt" todir="${project.build.directory}/repository-bin" />
                <tar destfile="${project.build.directory}/repository-bin.tar">
                  <tarfileset dir="${project.build.directory}/repository-bin" preserveLeadingSlashes="true">
                    <exclude name="**/commons-*/**" />
                    <exclude name="**/classworlds/**" />
                    <exclude name="**/com/**" />
                    <exclude name="**/de/**" />
                    <exclude name="**/jdom/**" />
                    <exclude name="**/jline/**" />
                    <exclude name="**/jtidy/**" />
                    <exclude name="**/junit/**" />
                    <exclude name="**/net/**" />
                    <exclude name="**/org/apache/ant/**" />
                    <exclude name="**/org/apache/commons/**" />
                    <exclude name="**/org/apache/apache/**" />
                    <exclude name="**/org/apache/maven/**" />
                    <exclude name="**/org/codehaus/**" />
                    <exclude name="**/org/easymock/**" />
                    <exclude name="**/org/slf4j/**" />
                    <exclude name="**/org/sonatype/**" />
                    <exclude name="**/slide/**" />
                    <exclude name="**/xml*/**" />
                  </tarfileset>
                </tar>
                <gzip src="${project.build.directory}/repository-bin.tar" destfile="${project.build.directory}/repository-bin.tar.gz" />
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <configuration>
              <artifacts>
                <artifact>
                  <file>${project.build.directory}/repository-bin.tar.gz</file>
                  <type>tar.gz</type>
                  <classifier>bin</classifier>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
