<?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</groupId>
    <artifactId>tooling</artifactId>
    <version>2.17.5</version>
  </parent>

  <artifactId>archetypes</artifactId>
  <name>Camel :: Archetypes</name>
  <description>Camel Archetypes</description>
  <packaging>pom</packaging>

  <modules>
    <module>camel-archetype-activemq</module>
    <module>camel-archetype-api-component</module>
    <module>camel-archetype-blueprint</module>
    <module>camel-archetype-cdi</module>
    <module>camel-archetype-component</module>
    <module>camel-archetype-cxf-code-first-blueprint</module>
    <module>camel-archetype-cxf-contract-first-blueprint</module>
    <module>camel-archetype-dataformat</module>
    <module>camel-archetype-groovy</module>
    <module>camel-archetype-java</module>
    <module>camel-archetype-scala</module>
    <module>camel-archetype-scr</module>
    <module>camel-archetype-spring</module>
    <module>camel-archetype-spring-boot</module>
    <module>camel-archetype-spring-dm</module>
    <module>camel-archetype-web</module>
  </modules>

  <build>
    <plugins>

      <!-- generate and attach Camel archetype catalog -->
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-package-maven-plugin</artifactId>
        <version>${project.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>generate-and-attach-archetype-catalog</goal>
            </goals>
            <phase>process-resources</phase>
          </execution>
        </executions>
      </plugin>

    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <configuration>
            <buildcommands>
              <java.lang.String>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</java.lang.String>
            </buildcommands>
            <projectnatures>
              <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
            </projectnatures>
            <additionalConfig>
              <file>
                <name>.checkstyle</name>
                <location>/camel-eclipse-checkstyle</location>
              </file>
            </additionalConfig>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
