<?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.freemarker.docgen</groupId>
        <artifactId>freemarker-docgen</artifactId>
        <version>0.0.2-SNAPSHOT</version>
    </parent>

    <groupId>org.apache.freemarker.docgen</groupId>
    <artifactId>freemarker-docgen-cli</artifactId>
    <name>Apache FreeMarker Docgen - CLI</name>
    <description>Docgen command line interface</description>

    <dependencies>
        <dependency>
            <groupId>org.apache.freemarker.docgen</groupId>
            <artifactId>freemarker-docgen-core</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.10</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repositoryLayout>flat</repositoryLayout>
                    <repositoryName>lib</repositoryName>
                    <extraJvmArguments>-Xms64m -Xmx512m</extraJvmArguments>
                    <endorsedDir>endorsed</endorsedDir>
                    <useWildcardClassPath>true</useWildcardClassPath>
                    <programs>
                        <program>
                            <platforms>
                                <platform>windows</platform>
                                <platform>unix</platform>
                            </platforms>
                            <mainClass>org.freemarker.docgen.cli.Main</mainClass>
                            <id>docgen</id>
                        </program>
                    </programs>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
