<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>brooklyn-archetype-quickstart</artifactId>
  <packaging>maven-archetype</packaging>
  <name>Brooklyn Quick-Start Project Archetype</name>
  <description>
    This project defines an archetype for creating new projects which consume brooklyn,
    including an example application and an example new entity type,
    able to build an OSGi JAR and a binary assembly, with logging and READMEs.
  </description>

  <parent>
    <groupId>org.apache.brooklyn</groupId>
    <artifactId>brooklyn-parent</artifactId>
    <version>0.9.0-SNAPSHOT</version>  <!-- BROOKLYN_VERSION -->
    <relativePath>../../../brooklyn-server/parent/pom.xml</relativePath>
  </parent>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-archetype-plugin</artifactId>
        <!-- all we want to do is skip _integration tests_ when skipTests is set, not other phases;
             but for some reason this seems to do it, and it still builds the archetype (!?).
             whereas setting skip inside the integration-test execution goal does NOT work.
              
             TODO promote to root pom.xml when we better understand why
        -->
        <configuration>
          <skip>${skipTests}</skip>
        </configuration>
      </plugin>
      
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <configuration>
          <filesets>
            <fileset> 
                <directory>src/test/resources/projects/integration-test-1/reference</directory> 
                <includes><include>**/*</include></includes>
            </fileset>
            <fileset> 
                <directory>src/main/resources/archetype-resources/</directory> 
                <includes><include>**/*</include></includes>
            </fileset>
          </filesets>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>maven-replacer-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-brooklyn-sample-to-integration-test-reference</id>
            <phase>clean</phase>
            <goals> <goal>replace</goal> </goals>
            <configuration>
              <basedir>${basedir}/src/brooklyn-sample</basedir> 
              <outputBasedir>${basedir}</outputBasedir>
              <outputDir>src/test/resources/projects/integration-test-1/reference</outputDir>
              <includes> <include>**</include> </includes>
              <excludes> 
                <exclude>.*</exclude> 
                <exclude>.*/**</exclude> 
                <exclude>target/**</exclude> 
                <exclude>*.log</exclude> 
              </excludes>
              
              <replacements />
            </configuration>
          </execution>
          <!-- would be nice to reduce the repetion below, but don't see how;
               have tried with valueTokenMap but it must lie beneath basedir;
               and tried with {input,output}FilePattern but that doesn't apply to dirs  -->
          <execution>
            <!-- copy creating variables and unpackaged, for src/main/java -->
            <id>copy-brooklyn-sample-to-archetype-src-main-java</id>
            <phase>clean</phase>
            <goals> <goal>replace</goal> </goals>
            <configuration>
              <basedir>${basedir}/src/brooklyn-sample/src/main/java/com/acme/sample/brooklyn</basedir>
              <outputBasedir>${basedir}</outputBasedir>
              <outputDir>src/main/resources/archetype-resources/src/main/java</outputDir>
              <includes> <include>**/*</include> </includes>
              <replacements>
                <replacement> <token>brooklyn-sample</token> <value>\$\{artifactId}</value> </replacement>
                <replacement> <token>com\.acme\.sample\.brooklyn</token> <value>\$\{package}</value> </replacement>
                <replacement> <token>com/acme/sample/brooklyn</token> <value>\$\{packageInPathFormat}</value> </replacement>
                <replacement> <token>com\.acme\.sample</token> <value>\$\{groupId}</value> </replacement>
                <replacement> <token>0.1.0-SNAPSHOT</token> <value>\$\{version}</value> </replacement>
              </replacements>
            </configuration>
          </execution>
          <execution>
            <!-- copy creating variables and unpackaged, for src/test/java -->
            <id>copy-brooklyn-sample-to-archetype-src-test-java</id>
            <phase>clean</phase>
            <goals> <goal>replace</goal> </goals>
            <configuration>
              <basedir>${basedir}/src/brooklyn-sample/src/test/java/com/acme/sample/brooklyn</basedir>
              <outputBasedir>${basedir}</outputBasedir>
              <outputDir>src/main/resources/archetype-resources/src/test/java</outputDir>
              <includes> <include>**/*</include> </includes>
              <replacements>
                <replacement> <token>brooklyn-sample</token> <value>\$\{artifactId}</value> </replacement>
                <replacement> <token>com\.acme\.sample\.brooklyn</token> <value>\$\{package}</value> </replacement>
                <replacement> <token>com/acme/sample/brooklyn</token> <value>\$\{packageInPathFormat}</value> </replacement>
                <replacement> <token>com\.acme\.sample</token> <value>\$\{groupId}</value> </replacement>
                <replacement> <token>0.1.0-SNAPSHOT</token> <value>\$\{version}</value> </replacement>
              </replacements>
            </configuration>
          </execution>
          <execution>
            <!-- copy creating variables, for all other places -->
            <id>copy-brooklyn-sample-to-archetype-resources</id>
            <phase>clean</phase>
            <goals> <goal>replace</goal> </goals>
            <configuration>
              <basedir>${basedir}/src/brooklyn-sample/</basedir>
              <outputBasedir>${basedir}</outputBasedir>
              <outputDir>src/main/resources/archetype-resources/</outputDir>
              <includes> <include>**/*</include> </includes>
              <excludes> 
                <exclude>src/main/java/**</exclude> 
                <exclude>src/test/java/**</exclude> 
                <exclude>target/**</exclude> 
                <exclude>test-output/**</exclude> 
                <exclude>.*</exclude> 
                <exclude>**/*.png</exclude> 
                <exclude>.*/**</exclude> 
                <exclude>*.log</exclude>
                <exclude>**/*.sh</exclude>
              </excludes>
              <replacements>
                <!-- special chars in velocity have to be escaped.
                     fortunately we only use fairly simple examples so we don't need to solve the general case! -->
                <!-- escaping # is ugly -->
                <replacement> <token>(#+)</token> <value>#set\(\$H='$1'\)\${H}</value> </replacement>
                <!-- and escaping $ doesn't even seem to work; perhaps an old version of velocity in use?
                     (however velocity ignores $ except for variables which are defined, so we're okay)
                <replacement> <token>\$</token> <value>\\\$</value> </replacement>
                -->
                
                <replacement> <token>brooklyn-sample</token> <value>\$\{artifactId}</value> </replacement>
                <replacement> <token>com\.acme\.sample\.brooklyn</token> <value>\$\{package}</value> </replacement>
                <replacement> <token>com/acme/sample/brooklyn</token> <value>\$\{packageInPathFormat}</value> </replacement>
                <replacement> <token>com\.acme\.sample</token> <value>\$\{groupId}</value> </replacement>
                <replacement> <token>0.1.0-SNAPSHOT</token> <value>\$\{version}</value> </replacement>
              </replacements>
            </configuration>
          </execution>
          <execution>
            <!-- copy creating variables, for all other places -->
            <id>copy-brooklyn-sample-to-archetype-resources-binary</id>
            <phase>clean</phase>
            <goals> <goal>replace</goal> </goals>
            <configuration>
              <basedir>${basedir}/src/brooklyn-sample/</basedir>
              <outputBasedir>${basedir}</outputBasedir>
              <outputDir>src/main/resources/archetype-resources/</outputDir>
              <includes>
                <include>**/*.png</include>
                <include>**/*.sh</include>
              </includes>
              <excludes> 
                <exclude>target/**</exclude> 
                <exclude>test-output/**</exclude> 
                <exclude>.*</exclude> 
                <exclude>.*/**</exclude> 
              </excludes>
              <!-- no replacements for binary (put one just so we can use this plugin for consistency) -->
              <replacements><replacement> <token>NONCE_123456789XYZ</token> <value>NONCE_123456789XYZ</value> </replacement></replacements>
            </configuration>
          </execution>
          
        </executions>
      </plugin>

    </plugins>
      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <configuration>
              <excludes combine.children="append">
                <!-- 
                    The maven archetype are files "without any degree of creativity". They are intended
                    purely as a template to generate a new project for a user, where upon the user can
                    write their code within this new project.
                    The exclusions seem to need to include code that is auto-generated during a test run.
                -->
                <exclude>**/src/main/resources/archetype-resources/**/*</exclude>
                <exclude>**/src/test/resources/projects/integration-test-1/goal.txt</exclude>
                <exclude>**/src/test/resources/projects/integration-test-1/reference/**/*</exclude>
                <exclude>**/src/main/java/sample/**/*Sample*.java</exclude>
                <exclude>**/src/main/resources/logback-custom.xml</exclude>
                <exclude>**/src/brooklyn-sample/README.md</exclude>
                <exclude>**/src/brooklyn-sample/pom.xml</exclude>
                <exclude>**/src/brooklyn-sample/src/main/assembly/files/conf/*</exclude>
                <exclude>**/src/brooklyn-sample/src/main/java/**/*.java</exclude>
                <exclude>**/src/brooklyn-sample/src/main/resources/logback-custom.xml</exclude>
                <exclude>**/src/brooklyn-sample/src/test/java/**/*.java</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </pluginManagement>

  </build>

</project>
