<?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</groupId>
        <artifactId>apache</artifactId>
        <version>26</version>
    </parent>

    <groupId>org.apache.camel.kamelets</groupId>
    <artifactId>camel-kamelets-parent</artifactId>
    <packaging>pom</packaging>
    <version>main-SNAPSHOT</version>
    <name>Camel Kamelets Parent</name>
    <description>Camel Kamelets Library Parent</description>

    <modules>
        <module>library/camel-kamelets</module>
        <module>library/camel-kamelets-catalog</module>
        <module>library/kamelets-maven-plugin</module>
        <module>library/camel-kamelets-utils</module>
        <module>library/camel-kamelets-bom</module>
    </modules>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>

        <failIfNoTests>false</failIfNoTests>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
        <maven-deploy-plugin.version>3.0.0</maven-deploy-plugin.version>
        <maven-surefire-plugin.version>3.0.0-M7</maven-surefire-plugin.version>
        <maven-javadoc-plugin.version>3.4.0</maven-javadoc-plugin.version>
        <maven-assembly-plugin.version>3.4.2</maven-assembly-plugin.version>
        <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
        <maven-checksum-maven-plugin.version>1.11</maven-checksum-maven-plugin.version>
        <maven-antrun-plugin.version>3.1.0</maven-antrun-plugin.version>
        <maven-groovy-plugin.version>2.1.1</maven-groovy-plugin.version>
        <apache-rat-plugin.version>0.14</apache-rat-plugin.version>

        <camel.version>3.18.0</camel.version>
        <slf4j.version>1.7.36</slf4j.version>
        <log4j.version>2.18.0</log4j.version>
        <jackson.version>2.13.3</jackson.version>
        <camel.k.extension.version>6.0.0</camel.k.extension.version>
        <commons.io.version>2.11.0</commons.io.version>
        <junit.jupiter.version>5.8.1</junit.jupiter.version>
        <classgraph.version>4.8.149</classgraph.version>

        <!-- Versions used inside Kamelets (add them also to the dependencyManagement section and the groovy script below) -->
        <!-- These properties must keep this same format "version.<groupId>.<artifactId>" -->
        <version.org.apache.commons.commons-dbcp2>2.9.0</version.org.apache.commons.commons-dbcp2>
        <version.com.amazon.redshift.redshift-jdbc42>2.1.0.9</version.com.amazon.redshift.redshift-jdbc42>
        <version.org.apache.qpid.qpid-jms-client>1.0.0</version.org.apache.qpid.qpid-jms-client>
        <version.org.apache.activemq.artemis-jms-client-all>2.23.1</version.org.apache.activemq.artemis-jms-client-all>
        <version.org.postgresql.postgresql>42.4.0</version.org.postgresql.postgresql>
        <version.org.apache.activemq.activemq-http>5.16.2</version.org.apache.activemq.activemq-http>
    </properties>

    <developers>
        <developer>
            <name>The Apache Camel Team</name>
            <email>dev@camel.apache.org</email>
            <url>http://camel.apache.org</url>
            <organization>Apache Software Foundation</organization>
            <organizationUrl>http://apache.org/</organizationUrl>
            <properties>
                <picUrl>http://camel.apache.org/banner.data/apache-camel-7.png</picUrl>
            </properties>
        </developer>
    </developers>

    <mailingLists>
        <mailingList>
            <name>Development List</name>
            <subscribe>dev-subscribe@camel.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@camel.apache.org</unsubscribe>
            <post>dev@camel.apache.org</post>
        </mailingList>
        <mailingList>
            <name>User List</name>
            <subscribe>users-subscribe@camel.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@camel.apache.org</unsubscribe>
            <post>users@camel.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Commits List</name>
            <subscribe>commits-subscribe@camel.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@camel.apache.org</unsubscribe>
            <post>commits@camel.apache.org</post>
        </mailingList>
    </mailingLists>

    <scm>
        <connection>scm:git:http://gitbox.apache.org/repos/asf/camel-kamelets.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/camel-kamelets.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=camel-kamelets.git;a=summary</url>
        <tag>v0.8.1</tag>
    </scm>

    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/apache/camel-kamelets/issues</url>
    </issueManagement>

    <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>

    <build>
        <defaultGoal>install</defaultGoal>

        <pluginManagement>
            <plugins>

                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>${apache-rat-plugin.version}</version>
                    <configuration>
                        <excludeSubProjects>false</excludeSubProjects>
                        <excludes>
                            <exclude>**/generated.txt</exclude>
                            <exclude>**/*.json</exclude>
                            <exclude>**/README</exclude>
                            <exclude>**/README.txt</exclude>
                            <exclude>**/README.md</exclude>
                            <exclude>**/ReadMe.md</exclude>
                            <exclude>**/resources/**/*.xsd</exclude>
                            <exclude>**/webapp/js/**/*</exclude>
                            <exclude>**/test/resources/**/*</exclude>
                            <exclude>**/test/data*/**/*</exclude>
                            <exclude>.gitignore</exclude>
                            <exclude>.git/**/*</exclude>
                            <exclude>**/*.adoc</exclude>
                            <exclude>**/*.adoc.template</exclude>
                            <exclude>**/*.md</exclude>
                            <exclude>**/*.sh</exclude>
                            <exclude>**/*.bat</exclude>
                            <exclude>**/java9-maven-settings</exclude>
                            <exclude>**/*.pfx</exclude>
                            <!-- tooling json-simple parser -->
                            <exclude>**/src/main/java/org/json/simple/**</exclude>
                            <!-- tooling/camel-manual/src/styles/print.css use a different license -->
                            <exclude>**/src/styles/print.css</exclude>
                            <!-- tooling for component docs -->
                            <exclude>**/component-header.mvel</exclude>
                            <exclude>**/component-options.mvel</exclude>
                            <exclude>**/endpoint-options.mvel</exclude>
                            <exclude>**/dataformat-options.mvel</exclude>
                            <exclude>**/eip-options.mvel</exclude>
                            <exclude>**/language-options.mvel</exclude>
                            <exclude>**/website-components-list.mvel</exclude>
                            <exclude>**/website-languages-list.mvel</exclude>
                            <exclude>**/website-others-list.mvel</exclude>
                            <exclude>**/website-dataformats-list.mvel</exclude>
                            <exclude>**/readme-examples.mvel</exclude>
                            <exclude>**/spring-boot-auto-configure-options.mvel</exclude>
                            <exclude>**/camel-NOTICE.txt</exclude>
                            <exclude>**/spring-boot-starter-NOTICE.txt</exclude>
                            <!-- cxf does not handle comments here -->
                            <exclude>**/src/main/resources/META-INF/cxf/cxf.extension</exclude>
                            <exclude>**/src/main/resources/META-INF/cxf/bus-extensions.txt</exclude>
                            <!-- ignore the api signatures files -->
                            <exclude>**/src/signatures/*.txt</exclude>
                            <!-- camel-salesforce BSD license from salesforce developers -->
                            <exclude>**/CometDReplayExtension.java</exclude>
                            <exclude>**/LICENSE-SALESFORCE.txt</exclude>
                            <!-- camel-as2 -->
                            <exclude>**/mdnDescription.vm</exclude>
                            <!-- camel-jbpm -->
                            <exclude>**/src/main/resources/*.wid</exclude>
                            <!-- camel website and user-manual -->
                            <exclude>**/node/**</exclude>
                            <exclude>**/node_modules/**</exclude>
                            <exclude>**/user-manual/**</exclude>
                            <exclude>**/yarn.lock</exclude>
                            <!-- examples -->
                            <exclude>**/fabric8/*.yaml</exclude>
                            <exclude>**/src/main/data/*.patient</exclude>
                            <exclude>**/src/main/data/*.csv</exclude>
                            <exclude>**/src/main/resources/avro/*.avsc</exclude>
                            <!-- generated files -->
                            <exclude>**/target/**/*</exclude>
                            <exclude>**/eclipse-classes/**/*</exclude>
                            <exclude>**/.*</exclude>
                            <exclude>**/.settings/**/*</exclude>
                            <exclude>**/*.iml</exclude>
                            <exclude>**/.idea/**/*</exclude>
                            <exclude>**/avro/**/*.avpr</exclude>
                            <exclude>**/OSGI-INF/bundle.info</exclude>
                            <exclude>**/test_rsa*</exclude>
                            <exclude>**/data*/**/*.xml</exclude>
                            <exlucde>**/*.log</exlucde>
                            <exclude>**/id_file</exclude>
                            <exclude>**/dependency-reduced-pom.xml</exclude>
                            <exclude>**/Dropbox_API_Terms_and_Conditions.txt</exclude>
                            <exclude>**/MerchandiseRestResource.apxc</exclude>
                            <exclude>**/file-sig-api.txt</exclude>
                            <exclude>**/Tasks__c.java</exclude>
                            <exclude>**/*.proto</exclude>
                            <exclude>
                                **/src/main/resources/META-INF/services/org.kie.server.services.api.KieServerExtension
                            </exclude>
                            <!-- Maven Wrapper -->
                            <exclude>.mvn/**/*</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <configuration>
                        <failIfNoTests>false</failIfNoTests>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>8</source>
                        <target>8</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>${maven-antrun-plugin.version}</version>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <ant antfile="update-kamelets.xml">
                                    <target name="update.kamelets" />
                                </ant>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>groovy-maven-plugin</artifactId>
                <version>${maven-groovy-plugin.version}</version>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <id>UpdateKamelets</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                <scriptpath>
                    <path>${project.basedir}/script/version</path>
                </scriptpath>
                    <source>
                    import UpdateDepsVersionKamelets
                    new UpdateDepsVersionKamelets().updateKameletDirectory("./kamelets/",  [
                        "version.org.apache.commons.commons-dbcp2": "${version.org.apache.commons.commons-dbcp2}",
                        "version.com.amazon.redshift.redshift-jdbc42": "${version.com.amazon.redshift.redshift-jdbc42}",
                        "version.org.apache.qpid.qpid-jms-client": "${version.org.apache.qpid.qpid-jms-client}",
                        "version.org.apache.activemq.artemis-jms-client-all": "${version.org.apache.activemq.artemis-jms-client-all}",
                        "version.org.postgresql.postgresql": "${version.org.postgresql.postgresql}",
                        "version.org.apache.activemq.activemq-http": "${version.org.apache.activemq.activemq-http}",
                    ])
                    </source>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>release</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <configuration>
                            <arguments>-Papache-release -Dmaven.antrun.skip ${arguments}</arguments>
                        </configuration>
                    </plugin>
                    <!-- We want to deploy the artifact to a staging location for perusal -->
                    <plugin>
                        <inherited>true</inherited>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>${maven-deploy-plugin.version}</version>
                        <configuration>
                            <updateReleaseInfo>true</updateReleaseInfo>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven-source-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <doclint>none</doclint>
                        </configuration>
                    </plugin>
                    <!-- We want to sign the artifact, the POM, and all attached artifacts -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <configuration>
                            <passphrase>${gpg.passphrase}</passphrase>
                            <useAgent>${gpg.useagent}</useAgent>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>net.nicoulaj.maven.plugins</groupId>
                        <artifactId>checksum-maven-plugin</artifactId>
                        <version>${maven-checksum-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>source-release-checksum</id>
                                <goals>
                                    <goal>files</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <algorithms>
                                <algorithm>SHA-512</algorithm>
                                <algorithm>SHA-256</algorithm>
                                <algorithm>SHA-1</algorithm>
                                <algorithm>MD5</algorithm>
                            </algorithms>
                            <csvSummary>false</csvSummary>
                            <fileSets>
                                <fileSet>
                                    <directory>${project.build.directory}</directory>
                                    <includes>
                                        <include>${project.artifactId}-${project.version}-sources.jar</include>
                                        <include>${project.artifactId}-${project.version}-package.tar.gz</include>
                                        <!--XXX: keep this in sync with distribution/pom.xml <finalName> tag-->
                                        <!-- include>camel-kafka-connector-${project.version}-src.zip</include-->
                                    </includes>
                                </fileSet>
                            </fileSets>
                            <failIfNoFiles>false
                            </failIfNoFiles><!-- usually, no file to do checksum: don't consider error -->
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
