<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018-present, A2 Rešitve d.o.o.
~
~ Licensed 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>
	<groupId>solutions.a2.oracle</groupId>
	<artifactId>oracdc-kafka</artifactId>
	<version>2.2.0</version>
	<packaging>jar</packaging>

	<name>oracdc-kafka</name>
	<url>https://a2-solutions.eu/#oracdc</url>
	<description>
		Oracle CDC Source Connectors (LogMiner and Snapshot Logs as source) for Kafka Connect
	</description>
	<organization>
		<name>A2 Rešitve, d.o.o.</name>
		<url>https://a2-solutions.eu/</url>
	</organization>
	<issueManagement>
		<url>https://github.com/averemee-si/oracdc/issues</url>
		<system>GitHub</system>
	</issueManagement>

	<licenses>
		<license>
			<name>Apache License</name>
			<url>https://a2-solutions.eu/licenses/apache/LICENSE.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<scm>
		<connection>scm:git:git://github.com/averemee-si/oracdc.git</connection>
		<developerConnection>scm:git:git@github.com:averemee-si/oracdc.git</developerConnection>
		<url>https://github.com//averemee-si/oracdc</url>
		<tag>HEAD</tag>
	</scm>

	<developers>
		<developer>
			<id>averemee-si</id>
			<name>Aleksei Veremeev</name>
			<email>averemee@a2.solutions</email>
			<timezone>Europe/Ljubljana</timezone>
			<organization>A2 Rešitve, d.o.o.</organization>
			<organizationUrl>https://a2-solutions.eu/</organizationUrl>
		</developer>
	</developers>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>11</maven.compiler.source>
		<maven.compiler.target>11</maven.compiler.target>
		<junit.version>5.10.2</junit.version>
		<kafka.version>3.6.1</kafka.version>
		<commons.lang3.version>3.13.0</commons.lang3.version>
		<commons.math3.version>3.6.1</commons.math3.version>
		<commons.cli.version>1.6.0</commons.cli.version>
		<chronicle.queue.version>5.23.37</chronicle.queue.version>
		<chronicle.affinity.version>3.23.3</chronicle.affinity.version>
		<ora.jdbc.version>21.11.0.0</ora.jdbc.version>
		<pg.jdbc.version>42.7.2</pg.jdbc.version>
		<HikariCP.version>5.1.0</HikariCP.version>
		<jackson.version>2.15.3</jackson.version>
		<slf4j.version>2.0.7</slf4j.version>
		<lz4.version>1.8.0</lz4.version>
		<ojdbc.types.version>0.8.0</ojdbc.types.version>
		<kafka.connect.maven.plugin.version>0.12.0</kafka.connect.maven.plugin.version>
		<jar.plugin.version>3.3.0</jar.plugin.version>
		<assembly.plugin.version>3.6.0</assembly.plugin.version>
		<surefire.plugin.version>2.22.2</surefire.plugin.version>
		<source.plugin.version>3.3.0</source.plugin.version>
		<javadoc.plugin.version>3.5.0</javadoc.plugin.version>
		<gpg.plugin.version>3.1.0</gpg.plugin.version>
		<staging.plugin.version>1.6.13</staging.plugin.version>
	</properties>

	<distributionManagement>
		<repository>
			<id>ossrh</id>
			<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
		</repository>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
	</distributionManagement>

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.kafka/connect-api -->
		<dependency>
			<groupId>org.apache.kafka</groupId>
			<artifactId>connect-api</artifactId>
			<version>${kafka.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>${commons.lang3.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-math3</artifactId>
			<version>${commons.math3.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->
		<dependency>
			<groupId>commons-cli</groupId>
			<artifactId>commons-cli</artifactId>
			<version>${commons.cli.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/net.openhft/affinity -->
		<dependency>
			<groupId>net.openhft</groupId>
			<artifactId>affinity</artifactId>
			<version>${chronicle.affinity.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/net.openhft/chronicle-queue -->
		<dependency>
			<groupId>net.openhft</groupId>
			<artifactId>chronicle-queue</artifactId>
			<version>${chronicle.queue.version}</version>
			<exclusions>
				<exclusion>
					<groupId>net.openhft</groupId>
					<artifactId>affinity</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11 -->
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc11</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ucp11 -->
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ucp11</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.security/osdt_core -->
		<dependency>
			<groupId>com.oracle.database.security</groupId>
			<artifactId>osdt_core</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.security/osdt_cert -->
		<dependency>
			<groupId>com.oracle.database.security</groupId>
			<artifactId>osdt_cert</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.security/oraclepki -->
		<dependency>
			<groupId>com.oracle.database.security</groupId>
			<artifactId>oraclepki</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.xml/xdb -->
		<dependency>
			<groupId>com.oracle.database.xml</groupId>
			<artifactId>xdb</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.oracle.database.xml/xmlparserv2 -->
		<dependency>
			<groupId>com.oracle.database.xml</groupId>
			<artifactId>xmlparserv2</artifactId>
			<version>${ora.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>${pg.jdbc.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<version>${HikariCP.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
 		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-reload4j -->
 		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-reload4j</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.lz4/lz4-java -->
		<dependency>
			<groupId>org.lz4</groupId>
			<artifactId>lz4-java</artifactId>
			<version>${lz4.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/solutions.a2.oracle/ojdbc-types -->
		<dependency>
			<groupId>solutions.a2.oracle</groupId>
			<artifactId>ojdbc-types</artifactId>
			<version>${ojdbc.types.version}</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<phase>install</phase>
						<goals>
							<goal>copy-dependencies</goal>
          				</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${surefire.plugin.version}</version>
				<configuration>
					<argLine>
						--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
						--add-exports java.base/sun.nio.ch=ALL-UNNAMED
						--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED
						--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
						--add-opens jdk.compiler/com.sun.tools.javac=ALL-UNNAMED
						--add-opens java.base/java.lang=ALL-UNNAMED
						--add-opens java.base/java.lang.reflect=ALL-UNNAMED
						--add-opens java.base/java.io=ALL-UNNAMED
						--add-opens java.base/java.util=ALL-UNNAMED
					</argLine>
				</configuration>
			</plugin>
			<plugin>
				<groupId>io.confluent</groupId>
				<version>${kafka.connect.maven.plugin.version}</version>
				<artifactId>kafka-connect-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>kafka-connect</goal>
						</goals>
						<configuration>
							<title>Kafka Connect Oracle CDC</title>
							<documentationUrl>https://github.com/averemee-si/oracdc</documentationUrl>
							<description>
								Changed data capture (CDC) for Oracle Database. Operates in two modes:
								1) Oracle LogMiner is used as source for data changes.
								2) Oracle RDBMS materialized view log's are used as source for data changes, oracdc materializes Oracle RDBMS materialized view log at heterogeneous database system or data lake.
								No additional licensing of Oracle Database required.
								JDBC sink connector optimized to work with PostgreSQL provided too.
							</description>
							<logo>logos/a2-oracdc.png</logo>

							<supportProviderName>A2 Rešitve, d.o.o.</supportProviderName>
							<supportSummary>Includes installation, and configuration assistance</supportSummary>
							<supportUrl>https://a2-solutions.eu/</supportUrl>
							<supportLogo>logos/a2-solutions.png</supportLogo>

							<ownerUsername>a2solutions</ownerUsername>
							<ownerType>organization</ownerType>
							<ownerName>A2 Rešitve, d.o.o.</ownerName>
							<ownerUrl>https://a2-solutions.eu/</ownerUrl>
							<ownerLogo>logos/a2-solutions.png</ownerLogo>

							<dockerNamespace></dockerNamespace>
							<dockerName></dockerName>
							<dockerTag></dockerTag>

							<componentTypes>
								<componentType>source</componentType>
								<componentType>sink</componentType>
							</componentTypes>

							<confluentControlCenterIntegration>
								true
							</confluentControlCenterIntegration>

							<tags>
								<tag>Oracle</tag>
								<tag>database</tag>
								<tag>RDBMS</tag>
								<tag>CDC</tag>
								<tag>PostgreSQL</tag>
								<tag>ingest</tag>
								<tag>capture</tag>
								<tag>collect</tag>
								<tag>Hadoop</tag>
								<tag>data lake</tag>
								<tag>JDBC</tag>
							</tags>

							<requirements>
								<requirement>Oracle 9i</requirement>
								<requirement>Oracle 10g</requirement>
								<requirement>Oracle 11g</requirement>
								<requirement>Oracle 12c</requirement>
								<requirement>Oracle 18c</requirement>
								<requirement>Oracle 19c</requirement>
								<requirement>Oracle 21c</requirement>
								<requirement>Oracle 23c</requirement>
								<requirement>Oracle DataGuard</requirement>
								<requirement>Oracle Active DataGuard</requirement>
								<requirement>Oracle Standby Database</requirement>
								<requirement>Oracle RAC</requirement>
								<requirement>Oracle Real Application Clusters</requirement>
								<requirement>Single Instance Physical Standby for Oracle RAC</requirement>
							</requirements>

							<deliveryGuarantee>
								<deliveryGuarantee>exactlyOnce</deliveryGuarantee>
							</deliveryGuarantee>

						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>${jar.plugin.version}</version>
				<configuration>
					<excludes>
					</excludes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>${assembly.plugin.version}</version>
				<configuration>
					<descriptors>
						<descriptor>src/assembly/standalone.xml</descriptor>
					</descriptors>
					<archive>
						<manifest>
							<mainClass>solutions.a2.cdc.oracle.schema.TableSchemaEditor</mainClass>
						</manifest>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>${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>${javadoc.plugin.version}</version>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-gpg-plugin</artifactId>
				<version>${gpg.plugin.version}</version>
				<executions>
					<execution>
						<id>sign-artifacts</id>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
						<configuration>
							<keyname>${gpg.keyname}</keyname>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<version>${staging.plugin.version}</version>
				<extensions>true</extensions>
				<configuration>
					<serverId>ossrh</serverId>
					<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
					<autoReleaseAfterClose>false</autoReleaseAfterClose>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
