<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2006 The Apache Software Foundation.
  ~
  ~ Licensed 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.codehaus.mojo.archetypeng</groupId>
        <artifactId>maven-archetypeng-core</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>maven-archetypeng-generator</artifactId>

    <name>Maven ArchetypeNG Generator</name>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.codehaus.mojo.archetypeng</groupId>
            <artifactId>maven-archetypeng-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-velocity</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-plugin-testing-harness</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.archetype</groupId>
            <artifactId>maven-archetype-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-interactivity-api</artifactId>
        </dependency>
        <dependency>
            <groupId>velocity</groupId>
            <artifactId>velocity</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-utils</artifactId>
        </dependency>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-artifact</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-artifact-manager</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-model</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.mojo.archetypeng</groupId>
            <artifactId>maven-archetypeng-archetype-descriptor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-container-default</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>ant</groupId>
                        <artifactId>ant-antlr</artifactId>
                        <version>1.6.5</version>
                    </dependency>
                </dependencies>

                <executions>
                    <execution>
                        <id>archetype-test</id>
                        <phase>process-test-resources</phase>
                        <configuration>
                            <tasks>
                                <property name="test.projects.name" value="maven-archetype-test"></property>
                                <property name="test.projects.version" value="1.0"></property>
                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
                                <property name="test.projects.repository" value="repositories/central"></property>

                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>

                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>archetype-test-partial</id>
                        <phase>process-test-resources</phase>
                        <configuration>
                            <tasks>
                                <property name="test.projects.name" value="maven-archetype-test-partial"></property>
                                <property name="test.projects.version" value="1.0"></property>
                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
                                <property name="test.projects.repository" value="repositories/central"></property>
                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>

                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>archetype-test-site</id>
                        <phase>process-test-resources</phase>
                        <configuration>
                            <tasks>
                                <property name="test.projects.name" value="maven-archetype-test-site"></property>
                                <property name="test.projects.version" value="1.0"></property>
                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
                                <property name="test.projects.repository" value="repositories/central"></property>

                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>

                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>archetype-test-old</id>
                        <phase>process-test-resources</phase>
                        <configuration>
                            <tasks>
                                <property name="test.projects.name" value="maven-archetype-test-old"></property>
                                <property name="test.projects.version" value="1.0"></property>
                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
                                <property name="test.projects.repository" value="repositories/central"></property>

                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>

                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>archetype-test-fileset</id>
                        <phase>process-test-resources</phase>
                        <configuration>
                            <tasks>
                                <property name="test.projects.name" value="maven-archetype-test-fileset"></property>
                                <property name="test.projects.version" value="1.0"></property>
                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
                                <property name="test.projects.repository" value="repositories/central"></property>

                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>

                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>repository-metadata</id>
                        <phase>process-test-resources</phase>
                        <configuration>
                            <tasks>
                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes"></property>
                                <property name="test.projects.repository" value="repositories/central"></property>

                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}"></mkdir>

                                <copy todir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}">
                                    <fileset dir="${basedir}/src/test/central-repository"></fileset>
                                </copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
