<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <groupId>io.debezium</groupId>
        <artifactId>debezium-parent</artifactId>
        <version>3.2.5.Final</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>debezium-connector-spanner</artifactId>
    <version>3.2.5.Final</version>
    <name>Debezium Google Spanner Kafka Connector Plugin</name>

    <packaging>jar</packaging>

    <properties>
        <version.debezium>${project.version}</version.debezium>
        <google.cloud.spanner.version>6.30.1</google.cloud.spanner.version>
        <version.sketches-java>0.8.2</version.sketches-java>
        <version.google.protos>2.8.3</version.google.protos>
        <version.com.google.protobuf>3.21.7</version.com.google.protobuf>
        <version.joda>2.10.14</version.joda>
        <version.commons-lang3>3.12.0</version.commons-lang3>
        <version.junit>5.8.2</version.junit>
        <version.mockito>5.12.0</version.mockito>
        <version.testcontainers>1.17.3</version.testcontainers>
        <version.assertj>3.23.1</version.assertj>
        <jacoco.version>0.8.6</jacoco.version>
        <jacoco.min.coverage>0.01</jacoco.min.coverage>
        <version.okhttp>4.10.0</version.okhttp>
        <version.awaitility>4.2.0</version.awaitility>
        <version.kafka.connect.maven.plugin>0.12.0</version.kafka.connect.maven.plugin>
        <version.protobuf-maven-plugin>0.6.1</version.protobuf-maven-plugin>
        <assembly.descriptor>connector-distribution-with-jsr310</assembly.descriptor>
        <docker.tag.name>latest</docker.tag.name>
        <docker.skip.push>true</docker.skip.push>
        <docker.repository.name>quay.io/debezium/kafka-spanner-connector</docker.repository.name>
        <!--
          Specify the properties that will be used for setting up the integration tests' Docker container.
        -->
        <docker.db>gcr.io/cloud-spanner-emulator/emulator</docker.db>
        <docker.filter>${docker.db},${docker.repository.name}:${docker.tag.name}</docker.filter>
        <docker.skip>false</docker.skip>
        <docker.showLogs>true</docker.showLogs>

        <publish.descriptorset>false</publish.descriptorset>
    </properties>

    <repositories>
        <repository>
            <id>central-snapshots</id>
            <name>Maven Central Snapshots</name>
            <url>${publish.snapshot.url}</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
        </repository>
    </repositories>

    <dependencyManagement>
        <dependencies>

            <!-- Debezium artifacts -->
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-common</artifactId>
                <version>${version.debezium}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-core</artifactId>
                <version>${version.debezium}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-embedded</artifactId>
                <version>${version.debezium}</version>
            </dependency>

            <!-- Building -->
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-ide-configs</artifactId>
                <version>${version.debezium}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-checkstyle</artifactId>
                <version>${version.debezium}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-assembly-descriptors</artifactId>
                <version>${version.debezium}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-revapi</artifactId>
                <version>${version.debezium}</version>
                <scope>provided</scope>
            </dependency>

            <!-- Google API -->
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>google-cloud-spanner</artifactId>
                <version>${google.cloud.spanner.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.api.grpc</groupId>
                <artifactId>proto-google-common-protos</artifactId>
                <version>${version.google.protos}</version>
            </dependency>

            <!-- Utils -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${version.joda}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jsr310</artifactId>
                <version>${version.jackson}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${version.commons-lang3}</version>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>${version.com.google.protobuf}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${version.org.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${version.org.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>com.datadoghq</groupId>
                <artifactId>sketches-java</artifactId>
                <version>${version.sketches-java}</version>
            </dependency>

            <!-- Testing -->
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <version>${version.testcontainers}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${version.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>${version.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${version.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${version.mockito}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-inline</artifactId>
                <version>${version.mockito}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-junit-jupiter</artifactId>
                <version>${version.mockito}</version>
            </dependency>
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${version.assertj}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${version.okhttp}</version>
            </dependency>
            <dependency>
                <groupId>org.awaitility</groupId>
                <artifactId>awaitility</artifactId>
                <version>${version.awaitility}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-core</artifactId>
                <version>${version.debezium}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-embedded</artifactId>
                <version>${version.debezium}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Debezium artifacts -->
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-core</artifactId>
        </dependency>

        <!-- Kafka -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>connect-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </dependency>

        <!-- Google API -->
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-spanner</artifactId>
        </dependency>

        <!-- Utils -->
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
        <dependency>
            <groupId>com.datadoghq</groupId>
            <artifactId>sketches-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>

        <!-- Building -->
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-ide-configs</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-checkstyle</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-assembly-descriptors</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-revapi</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-common</artifactId>
        </dependency>

        <!-- Testing -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-embedded</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-embedded</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.debezium</groupId>
            <artifactId>debezium-core</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.confluent</groupId>
            <artifactId>kafka-connect-avro-converter</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>testcontainers</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.7.0</version>
            </extension>
        </extensions>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>${version.protobuf-maven-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>io.confluent</groupId>
                    <artifactId>kafka-connect-maven-plugin</artifactId>
                    <version>${version.kafka.connect.maven.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.40.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <configuration>
                    <writeDescriptorSet>${publish.descriptorset}</writeDescriptorSet>
                    <includeDependenciesInDescriptorSet>true</includeDependenciesInDescriptorSet>
                    <descriptorSetFileName>sync_event_generated.desc</descriptorSetFileName>
                    <descriptorSetOutputDirectory>${project.basedir}/generated-sources</descriptorSetOutputDirectory>
                    <attachDescriptorSet>${publish.descriptorset}</attachDescriptorSet>
                    <includeSourceInfoInDescriptorSet>true</includeSourceInfoInDescriptorSet>
                    <protocArtifact>
                        com.google.protobuf:protoc:${version.com.google.protobuf}:exe:${os.detected.classifier}
                    </protocArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <skipTests>${skipITs}</skipTests>
                    <enableAssertions>true</enableAssertions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <configuration>
                    <watchInterval>500</watchInterval>
                    <logDate>default</logDate>
                    <verbose>true</verbose>
                    <imagePullPolicy>IfNotPresent</imagePullPolicy>
                    <images>
                        <image>
                            <name>${docker.db}</name>
                            <run>
                                <namingStrategy>none</namingStrategy>
                                <ports>
                                    <port>9010:9010</port>
                                    <port>9020:9020</port>
                                </ports>
                                <log>
                                    <prefix>cloud-spanner-emulator</prefix>
                                    <enabled>true</enabled>
                                    <color>yellow</color>
                                </log>
                                <wait>
                                    <time>10000</time>
                                    <log>Cloud Spanner Emulator running.</log>
                                </wait>
                            </run>
                            <external>
                                <type>properties</type>
                                <mode>override</mode>
                            </external>
                        </image>
                    </images>
                </configuration>
                <executions>
                    <execution>
                        <id>build</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                        <configuration>
                            <repository>${docker.repository.name}</repository>
                            <skip>${docker.skip.push}</skip>
                            <buildArgs>
                                <projectVersion>${project.version}</projectVersion>
                            </buildArgs>
                            <images>
                                <image>
                                    <name>${docker.repository.name}:${docker.tag.name}</name>
                                    <build>
                                        <contextDir>${project.basedir}</contextDir>
                                        <dockerFile>${project.basedir}/src/test/docker/Dockerfile</dockerFile>
                                        <filter>@</filter>
                                    </build>
                                </image>
                            </images>
                        </configuration>
                    </execution>
                    <execution>
                        <id>push</id>
                        <phase>package</phase>
                        <goals>
                            <goal>push</goal>
                        </goals>
                        <configuration>
                            <repository>${docker.repository.name}</repository>
                            <pushImage>true</pushImage>
                            <skip>${docker.skip.push}</skip>
                            <authConfig>
                                <username>${docker.username}</username>
                                <password>${docker.password}</password>
                            </authConfig>
                            <images>
                                <image>
                                    <name>${docker.repository.name}:${docker.tag.name}</name>
                                    <build>
                                        <contextDir>${project.basedir}</contextDir>
                                        <dockerFile>${project.basedir}/src/test/docker/Dockerfile</dockerFile>
                                        <filter>@</filter>
                                    </build>
                                </image>
                            </images>
                        </configuration>
                    </execution>
                    <execution>
                        <id>start</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>start</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>stop</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <!-- Apply the properties set in the POM to the resource files -->
            <resource>
                <filtering>true</filtering>
                <directory>src/main/resources</directory>
                <includes>
                    <include>*</include>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>*</include>
                    <include>**/*</include>
                </includes>
            </testResource>
        </testResources>
    </build>

    <profiles>
        <profile>
            <id>assembly</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>${version.assembly.plugin}</version>
                        <dependencies>
                            <dependency>
                                <groupId>io.debezium</groupId>
                                <artifactId>debezium-assembly-descriptors</artifactId>
                                <version>${project.version}</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <id>default</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>${project.artifactId}-${project.version}</finalName>
                                    <attach>true</attach>  <!-- we want attach & deploy these to Maven -->
                                    <descriptorRefs>
                                        <descriptorRef>${assembly.descriptor}</descriptorRef>
                                    </descriptorRefs>
                                    <tarLongFileMode>posix</tarLongFileMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>pack-local-changes</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>${version.assembly.plugin}</version>
                        <executions>
                            <execution>
                                <id>pack-local-changes</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>${project.artifactId}-${project.version}</finalName>
                                    <descriptors>
                                        <descriptor>src/test/docker/distribution.xml</descriptor>
                                    </descriptors>
                                    <tarLongFileMode>posix</tarLongFileMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>skip-integration-tests</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>skipITs</name>
                </property>
            </activation>
            <properties>
                <docker.skip>true</docker.skip>
            </properties>
        </profile>
        <profile>
            <id>quick</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>quick</name>
                </property>
            </activation>
            <properties>
                <skipITs>true</skipITs>
                <docker.skip>true</docker.skip>
            </properties>
        </profile>
        <profile>
            <id>test-coverage</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <printSummary>false</printSummary>
                            <redirectTestOutputToFile>true</redirectTestOutputToFile>
                            <forkCount>3</forkCount>
                            <reuseForks>true</reuseForks>
                            <argLine>${surefireArgLine} -Xmx1024m -noverify</argLine>
                        </configuration>
                    </plugin>
                    <!-- <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <printSummary>true</printSummary>
                            <redirectTestOutputToFile>true</redirectTestOutputToFile>
                            <forkCount>3</forkCount>
                            <reuseForks>true</reuseForks>
                            <argLine>${surefireArgLine} -Xmx1024m -noverify</argLine>
                        </configuration>
                    </plugin> -->
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>${jacoco.version}</version>
                        <configuration>
                            <excludes>
                                <exclude>
                                    io/debezium/connector/spanner/context/offset/SpannerOffsetContext.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/db/model/schema/ColumnType.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/db/model/StreamEventMetadata.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/db/stream/PartitionEventListener.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/db/stream/SpannerChangeStreamService.class</exclude>
                                <exclude>io/debezium/connector/spanner/metrics/SpannerMeter.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/metrics/jmx/SpannerMetricsMXBean.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/metrics/jmx/SpannerSnapshotChangeEventSourceMetricsStub.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/metrics/jmx/SpannerStreamingChangeEventSourceMetrics.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/schema/mapper/ColumnTypeSchemaMapper.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/schema/KafkaSpannerTableSchemaFactory.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/SpannerStreamingChangeEventSource.PartitionEventListener.class</exclude>
                                <exclude>io/debezium/connector/spanner/SpannerErrorHandler.class</exclude>
                                <exclude>io/debezium/connector/spanner/SpannerBaseSourceTask.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/SpannerSourceInfoStructMaker.class</exclude>
                                <exclude>io/debezium/connector/spanner/SpannerPartition.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/SpannerChangeEventSourceCoordinator.class</exclude>
                                <exclude>
                                    io/debezium/connector/spanner/CommittingRecordsStreamingChangeEventSource.class</exclude>
                                <exclude>io/debezium/connector/spanner/SpannerConnectorTask.class</exclude>

                                <exclude>io/debezium/connector/spanner/config/validation/**</exclude>
                                <exclude>io/debezium/connector/spanner/db/model/event/**</exclude>
                                <exclude>io/debezium/connector/spanner/db/dao/**</exclude>
                                <exclude>io/debezium/connector/spanner/db/metadata/**</exclude>
                                <exclude>io/debezium/connector/spanner/db/model/schema/**</exclude>
                                <exclude>io/debezium/connector/spanner/kafka/internal/proto</exclude>
                                <exclude>io/debezium/connector/spanner/kafka/internal/proto/**</exclude>
                                <exclude>io/debezium/connector/spanner/kafka/internal/model/**</exclude>
                                <exclude>io/debezium/connector/spanner/kafka/internal/**</exclude>
                                <exclude>io/debezium/connector/spanner/kafka/**</exclude>
                                <exclude>io/debezium/connector/spanner/metrics/event/*</exclude>
                                <exclude>io/debezium/connector/spanner/task/**</exclude>
                                <exclude>io/debezium/connector/spanner/transforms/*</exclude>
                            </excludes>
                        </configuration>
                        <executions>
                            <execution>
                                <id>prepare-unit-tests</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <append>true</append>
                                    <destFile>target/jacoco.exec</destFile>
                                    <!-- Sets the VM argument line used when unit tests are run. -->
                                    <propertyName>surefireArgLine</propertyName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
