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

    <artifactId>freemarker-generator-cli</artifactId>
    <name>CLI</name>
    <description>Command-line client for Apache FreeMarker</description>

    <build>
        <defaultGoal>package</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repositoryLayout>flat</repositoryLayout>
                    <repositoryName>lib</repositoryName>
                    <!--
                        See https://ryanharrison.co.uk/2018/04/29/faster-java-startup-time.html
                        "-Xverify:none -XX:TieredStopAtLevel=1" improves startup time by 50%
                        See https://www.eclipse.org/openj9/docs/xverify/
                        "-Xverifiy:none" is deprecated in Java 13
                     -->
                    <extraJvmArguments>-Xms64m -Xmx512m -XX:TieredStopAtLevel=1</extraJvmArguments>
                    <endorsedDir>endorsed</endorsedDir>
                    <useWildcardClassPath>true</useWildcardClassPath>
                    <configurationDirectory>config</configurationDirectory>
                    <programs>
                        <program>
                            <platforms>
                                <platform>windows</platform>
                                <platform>unix</platform>
                            </platforms>
                            <mainClass>org.apache.freemarker.generator.cli.Main</mainClass>
                            <id>freemarker-generator</id>
                        </program>
                    </programs>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>package</id>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <copy file="CHANGELOG.md" todir="./target/appassembler" />
                                <copy file="README.md" todir="./target/appassembler" />
                                <copy file="LICENSE" todir="./target/appassembler" />
                                <copy file="NOTICE" todir="./target/appassembler" />
                                <copy file="./src/app/scripts/run-examples.bat" todir="./target/appassembler" />
                                <copy file="./src/app/scripts/run-examples.sh" todir="./target/appassembler" />
                                <copy file="./src/app/scripts/examples.args" todir="./target/appassembler" />
                                <copy file="./src/app/scripts/examples-win.args" todir="./target/appassembler" />
                                <copy todir="./target/appassembler/config">
                                    <fileset dir="src/app/config" />
                                </copy>
                                <copy todir="./target/appassembler/templates">
                                    <fileset dir="src/app/templates" />
                                </copy>
                                <copy todir="./target/appassembler/examples">
                                    <fileset dir="src/app/examples" />
                                </copy>
                                <chmod file="./target/appassembler/run-examples.sh" perm="a+x" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <configuration>
                            <tarLongFileMode>gnu</tarLongFileMode>
                            <descriptors>
                                <descriptor>${basedir}/src/main/assembly/app.xml</descriptor>
                            </descriptors>
                        </configuration>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <executions>
                    <execution>
                        <id>get-the-git-infos</id>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>validate-the-git-infos</id>
                        <goals>
                            <goal>validateRevision</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
                    <prefix>git</prefix>
                    <verbose>false</verbose>
                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
                    <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties
                    </generateGitPropertiesFilename>
                    <format>properties</format>
                    <gitDescribe>
                        <skip>false</skip>
                        <always>false</always>
                        <dirty>-dirty</dirty>
                    </gitDescribe>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-jxr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>README.md</exclude>
                        <exclude>CHANGELOG.md</exclude>
                        <exclude>.travis.yml</exclude>
                        <exclude>src/app/examples/data/*/**</exclude>
                        <exclude>src/app/scripts/run-examples.bat</exclude>
                        <exclude>src/main/resources/patterns/*</exclude>
                        <exclude>src/site/markdown/**/*.md</exclude>
                        <exclude>src/test/data/encoding/utf8.txt</exclude>
                        <exclude>src/test/data/json/*/**</exclude>
                        <exclude>src/test/data/yaml/environments.yaml</exclude>
                        <exclude>src/app/examples/templates/nginx/confluence/nginx-config-parser.ftl</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <dependencies>
        <!-- CLI processing -->
        <dependency>
            <groupId>info.picocli</groupId>
            <artifactId>picocli</artifactId>
            <version>4.6.1</version>
        </dependency>
        <!-- Apache FreeMarker Generator Tools -->
        <dependency>
            <groupId>org.apache.freemarker.generator</groupId>
            <artifactId>freemarker-generator-tools</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- Logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
        </dependency>
        <!-- Testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
