<?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.camel.example</groupId>
    <artifactId>examples</artifactId>
    <version>2.22.3</version>
  </parent>

  <artifactId>camel-example-ceylon</artifactId>
  <packaging>jar</packaging>
  <name>Camel :: Example :: Ceylon</name>
  <description>A Camel route using Ceylon</description>

  <properties>
    <category>Other Languages</category>
    <ceylon.version>1.3.3</ceylon.version>
  </properties>

  <build>

    <resources>
      <resource>
        <directory>src/main/resources/module</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/module.ceylon</include>
        </includes>
      </resource>
    </resources>

    <sourceDirectory>${project.basedir}/src/main/ceylon</sourceDirectory>

    <plugins>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <!-- we're replacing ${project.version} in module.ceylon, to use the
                 current version -->
            <id>prepare-module-ceylon</id>
            <phase>process-resources</phase>
            <configuration>
              <target>
                <copy file="${project.build.outputDirectory}/module.ceylon" toFile="${project.basedir}/src/main/ceylon/org/apache/camel/example/module.ceylon" overwrite="true" />
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
          <execution>
            <!-- by default we would use ceylon-maven-plugin:import-dependency,
                 this fails if the Maven reactor doesn't contain the JAR artifact
                 attached to the Maven module so here we prepare the module 
                 dependencies via file copying -->
            <id>prepare-module-dependencies</id>
            <phase>initialize</phase>
            <configuration>
              <target>
                <copy file="../../camel-core/target/camel-core-${project.version}.jar" toFile="${project.build.directory}/modules/org/apache/camel/camel-core/${project.version}/org.apache.camel.camel-core-${project.version}.jar" overwrite="true" />
                <copy file="../../components/camel-jetty/target/camel-jetty-${project.version}.jar" toFile="${project.build.directory}/modules/org/apache/camel/camel-jetty/${project.version}/org.apache.camel.camel-jetty-${project.version}.jar" overwrite="true" />
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.ceylon-lang</groupId>
        <artifactId>ceylon-maven-plugin</artifactId>
        <version>${ceylon.version}</version>
        <configuration>
          <disablePomChecks>true</disablePomChecks>
          <module>org.apache.camel.example/${project.version}</module>
        </configuration>
        <executions>
          <execution>
            <id>compile</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <verbose>true</verbose>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

</project>
