<?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.springboot</groupId>
		<artifactId>spring-boot</artifactId>
		<version>4.0.0-SNAPSHOT</version>
	</parent>

	<groupId>org.apache.camel.springboot.example</groupId>
	<artifactId>examples</artifactId>
	<name>Camel SB :: Examples</name>
	<description>Camel Examples</description>
	<packaging>pom</packaging>

	<modules>
		<module>spring-boot</module>
		<module>actuator-http-metrics</module>
		<module>amqp</module>
		<module>arangodb</module>
		<module>aws-secrets-manager</module>
		<module>aws2-s3</module>
		<module>dynamic-router-eip</module>
		<module>endpointdsl</module>
		<module>fhir</module>
		<module>fhir-auth-tx</module>
		<module>health-checks</module>
		<module>infinispan</module>
		<module>jira</module>
		<module>kafka-avro</module>
		<module>kafka-offsetrepository</module>
		<module>kamelet-chucknorris</module>
		<module>load-balancer-eip</module>
		<module>mail-ms-exchange-oauth2</module>
		<module>master</module>
		<module>metrics</module>
		<module>paho-mqtt5-shared-subscriptions</module>
		<module>platform-http</module>
		<module>pojo</module>
		<module>rabbitmq</module>
		<module>reactive-streams</module>
		<module>resilience4j</module>
		<module>rest-openapi</module>
		<module>rest-openapi-simple</module>
		<module>rest-openapi-springdoc</module>
		<module>routetemplate</module>
		<module>routetemplate-xml</module>
		<module>route-reload</module>
		<module>routes-configuration</module>
		<!--<module>saga</module>-->
		<module>supervising-route-controller</module>
		<module>twitter-salesforce</module>
		<module>type-converter</module>
		<module>validator</module>
		<module>webhook</module>
		<module>xml</module>
		<module>xml-import</module>
		<module>strimzi</module>
		<module>quartz</module>
		<module>splitter-eip</module>
		<module>widget-gadget</module>
		<module>azure</module>
    </modules>

	<properties>
		<camel-version>4.0.0-SNAPSHOT</camel-version>
		<skip.starting.camel.context>false</skip.starting.camel.context>
		<javax.servlet.api.version>4.0.1</javax.servlet.api.version>
		<jkube-maven-plugin-version>1.9.1</jkube-maven-plugin-version>
		<kafka-avro-serializer-version>5.2.2</kafka-avro-serializer-version>
		<reactor-version>3.2.16.RELEASE</reactor-version>
		<testcontainers-version>1.16.3</testcontainers-version>
		<hapi-structures-v24-version>2.3</hapi-structures-v24-version>
		<narayana-spring-boot-version>2.6.3</narayana-spring-boot-version>
	</properties>

	<repositories>
		<repository>
			<id>apache.snapshots</id>
			<url>https://repository.apache.org/snapshots/</url>
			<name>Apache Snapshot Repo</name>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
			<releases>
				<enabled>false</enabled>
			</releases>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>apache.snapshots</id>
			<url>https://repository.apache.org/snapshots/</url>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
			<releases>
				<enabled>false</enabled>
			</releases>
		</pluginRepository>
	</pluginRepositories>

	<dependencyManagement>
		<dependencies>
			<!--
			  CAMEL-13084 Fix the spring-boot examples start up error by overriding servlet API version from camel-parent
			  We need to clean it up once camel-parent upgrade the servlet api version.
			-->
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>${javax.servlet.api.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

			<!-- update readme file -->
			<plugin>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-package-maven-plugin</artifactId>
				<version>${camel-version}</version>
				<configuration>
					<startingFolder></startingFolder>
					<filter>spring-boot</filter>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>prepare-example</goal>
						</goals>
						<phase>process-resources</phase>
					</execution>
				</executions>
			</plugin>

			<!-- to validate Camel endpoints: mvn camel-report:validate -->
			<plugin>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-report-maven-plugin</artifactId>
				<version>${camel-version}</version>
				<configuration>
					<failOnError>false</failOnError>
					<includeTest>true</includeTest>
					<includeXml>true</includeXml>
					<ignoreLenientProperties>false</ignoreLenientProperties>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<forkCount>1</forkCount>
					<reuseForks>false</reuseForks>
					<systemPropertyVariables>
						<skipStartingCamelContext>${skip.starting.camel.context}</skipStartingCamelContext>
					</systemPropertyVariables>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>container-test</id>
			<properties>
				<skip.starting.camel.context>true</skip.starting.camel.context>
			</properties>
		</profile>
		<!--
		  This profile allows you to add a repository to the repo list so that
		  you can test the examples out against a staged version of the camel distribution
		-->
		<profile>
			<id>add-remote-repo</id>
			<activation>
				<property>
					<name>remoteRepo</name>
				</property>
			</activation>

			<repositories>
				<repository>
					<id>dynamic.repo</id>
					<name>Repository Dynamically Added Via the Command Line</name>
					<url>$remoteRepo</url>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>dynamic.repo</id>
					<name>Repository Dynamically Added Via the Command Line</name>
					<url>$remoteRepo</url>
				</pluginRepository>
			</pluginRepositories>

		</profile>
	</profiles>

</project>
