<?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>
    <parent>
        <groupId>org.apache.camel.quarkus</groupId>
        <artifactId>camel-quarkus-build-parent-it</artifactId>
        <version>1.5.0</version>
        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
    </parent>

    <artifactId>camel-quarkus-azure-storage-blob-integration-test</artifactId>
    <name>Camel Quarkus :: Azure Storage Blob Service :: Integration Test</name>
    <description>Integration tests for Camel Quarkus Azure Storage Blob Service extension</description>

    <properties>
        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
        <!-- Please update the rule whenever you change the dependencies of this module by running -->
        <!--     mvn process-resources -Pformat    from the root directory -->
        <mvnd.builder.rule>camel-quarkus-azure-storage-blob-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.camel.quarkus</groupId>
                <artifactId>camel-quarkus-bom-test</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel.quarkus</groupId>
            <artifactId>camel-quarkus-azure-storage-blob</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy</artifactId>
        </dependency>

        <!-- test dependencies -->
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-junit5</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>
