<?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">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.6</version>
		<relativePath />
	</parent>

	<groupId>io.netfoundry</groupId>
	<artifactId>core-management</artifactId>
	<name>core-management</name>
	<version>0.0.4-SNAPSHOT</version>
	<description>Core Management Service</description>

	<properties>
		<core.openapi.version>0.1.3</core.openapi.version>
		<spring-cloud.version>2022.0.2</spring-cloud.version>
		<spring-cloud-aws.version>2.4.4</spring-cloud-aws.version>
		<sonar.projectName>core-management</sonar.projectName>
		<sonar.projectKey>netfoundry_core-management</sonar.projectKey>
		<sonar.organization>netfoundry</sonar.organization>
		<sonar.host.url>https://sonarcloud.io</sonar.host.url>
		<sonar.sources>src/main</sonar.sources>
		<sonar.tests>src/test</sonar.tests>
		<sonar.coverage.exclusions>
      **/config/*, **/controller/CommonExceptionHandler.java, **/cm/*, **/cloud/**/*, **/ziti/client/*, **/external/sds/*,
      **/domain/WhereClauseResolver.java, **/ProcessException.java, **/PublishedNetworkVersion*, **/ReissueEdgeRouterProcess*
    </sonar.coverage.exclusions>
		<sonar.cpd.exclusions>
      **/domain/**/Service.java,**/domain/**/CreateService.java,**/domain/**/UpdateService.java,
      **/domain/**/Endpoint.java,**/domain/**/CreateEndpoint.java,**/domain/**/UpdateEndpoint.java,
      **/domain/**/CreateNetwork.java,**/domain/**/UpdateNetwork.java,
      **/domain/**/AppWan.java,**/domain/**/CreateAppWan.java,**/domain/**/UpdateAppWan.java,
      **/domain/**/EdgeRouter.java,**/domain/**/CreateEdgeRouter.java,**/domain/**/UpdateEdgeRouter.java,
      **/domain/**/PostureCheck.java,**/domain/**/CreatePostureCheck.java,**/domain/**/UpdatePostureCheck.java,
      **/domain/**/EdgeRouterPolicy.java,**/domain/**/CertificateAuthority.java, **/ReissueEdgeRouterProcess*
    </sonar.cpd.exclusions>

		<springdoc-openapi.version>2.1.0</springdoc-openapi.version>
		<snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory>
		<maven.compiler.release>17</maven.compiler.release>
		<maven.compiler.useIncrementalCompilation>false</maven.compiler.useIncrementalCompilation>
		<surefire.reuseForks>false</surefire.reuseForks>
		<java.version>17</java.version>

		<!-- If flyway is run as a Maven task, then it needs to know the location of migration files.
         This should always match the spring.flyway.locations property in the application.properties file. -->
		<flyway.locations>classpath:db/migration,classpath:db/mysql</flyway.locations>
	</properties>


	<dependencies>

		<!-- Spring Dependencies -->

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-hateoas</artifactId>
		</dependency>

		<!-- CVE-2023-1370 - spring-boot-starter-hateoas brings in
      - vulnerable version json-path 2.7.0
      - This override can be removed once the spring boot starter is updated
    -->
		<dependency>
			<groupId>com.jayway.jsonpath</groupId>
			<artifactId>json-path</artifactId>
			<version>2.8.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bootstrap</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-tracing-bridge-brave</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-json</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.retry</groupId>
			<artifactId>spring-retry</artifactId>
		</dependency>

		<!-- NetFoundry Dependencies -->
		<dependency>
			<groupId>io.netfoundry</groupId>
			<artifactId>common-util-framework</artifactId>
			<version>2.0.7</version>
		</dependency>

		<dependency>
			<groupId>io.netfoundry</groupId>
			<artifactId>authorization</artifactId>
			<version>2.0.1</version>
			<classifier>client</classifier>
			<exclusions>
				<!-- Excluding default (4.0) version of httpclient in favor of the newer one (5.0) below -->
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>io.netfoundry</groupId>
			<artifactId>process-framework</artifactId>
			<version>0.24.0</version>
		</dependency>

		<dependency>
			<groupId>io.netfoundry</groupId>
			<artifactId>messaging-framework</artifactId>
			<version>0.5.3</version>
		</dependency>

		<dependency>
			<groupId>io.netfoundry</groupId>
			<artifactId>cloud-provider-sdk</artifactId>
			<version>0.12.2</version>
		</dependency>

		<dependency>
			<groupId>io.netfoundry</groupId>
			<artifactId>ziti-java-management-client</artifactId>
			<version>0.4.0</version>
		</dependency>

		<!-- needed to create a request factory that ignores SSL verification for ziti connections -->
		<dependency>
			<groupId>org.apache.httpcomponents.client5</groupId>
			<artifactId>httpclient5</artifactId>
		</dependency>

		<dependency>
			<groupId>io.github.resilience4j</groupId>
			<artifactId>resilience4j-circuitbreaker</artifactId>
		</dependency>

		<dependency>
			<groupId>io.github.resilience4j</groupId>
			<artifactId>resilience4j-micrometer</artifactId>
		</dependency>

		<!-- Amazon SDKs -->
		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>route53</artifactId>
		</dependency>

		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>sqs</artifactId>
		</dependency>

		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>sns</artifactId>
		</dependency>

		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>secretsmanager</artifactId>
		</dependency>

		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>s3</artifactId>
		</dependency>

		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>dynamodb</artifactId>
		</dependency>

		<!-- Spring Cloud AWS -->
		<dependency>
			<groupId>io.awspring.cloud</groupId>
			<artifactId>spring-cloud-starter-aws</artifactId>
			<version>${spring-cloud-aws.version}</version>
		</dependency>

		<dependency>
			<groupId>io.awspring.cloud</groupId>
			<artifactId>spring-cloud-starter-aws-secrets-manager-config</artifactId>
			<version>${spring-cloud-aws.version}</version>
		</dependency>

		<!-- Certificate/Encryption Dependencies -->

		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcpkix-jdk15on</artifactId>
			<version>1.70</version>
		</dependency>

		<!-- Persistence Dependencies -->

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
		</dependency>

		<dependency>
			<groupId>org.flywaydb</groupId>
			<artifactId>flyway-core</artifactId>
			<!-- forced version up to get around issue with H2 and flyway.  See https://github.com/flyway/flyway/issues/3336 -->
			<version>8.5.13</version>
		</dependency>

		<dependency>
			<groupId>org.flywaydb</groupId>
			<artifactId>flyway-mysql</artifactId>
			<version>8.5.13</version>
		</dependency>

		<dependency>
			<groupId>org.redisson</groupId>
			<artifactId>redisson-spring-boot-starter</artifactId>
			<version>3.19.0</version>
		</dependency>

		<!-- Misc. Minor Dependencies -->

		<dependency>
			<!-- Metrics reporting -->
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-core</artifactId>
		</dependency>

		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-registry-elastic</artifactId>
		</dependency>

		<dependency>
			<groupId>net.jodah</groupId>
			<artifactId>failsafe</artifactId>
			<version>2.4.4</version>
		</dependency>

		<dependency>
			<!-- Caching -->
			<groupId>com.github.ben-manes.caffeine</groupId>
			<artifactId>caffeine</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>7.3</version>
		</dependency>

		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-yaml</artifactId>
		</dependency>

		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-csv</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.15.2</version>
		</dependency>
		<dependency>
			<!-- utilities for reflection, classpath scanning, etc. (beyond spring) -->
			<groupId>org.reflections</groupId>
			<artifactId>reflections</artifactId>
			<version>0.10.2</version>
		</dependency>

		<dependency>
			<!-- subnet support (dupes functionality of ipaddress) -->
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.9.0</version>
		</dependency>

		<dependency>
			<!-- ip v4 & v6, CIDR, private host, and tons of advanced net address support -->
			<groupId>com.github.seancfoley</groupId>
			<artifactId>ipaddress</artifactId>
			<version>5.3.4</version>
		</dependency>

		<dependency>
			<!-- 3d barcode generation and reading -->
			<groupId>com.google.zxing</groupId>
			<artifactId>core</artifactId>
			<version>3.4.1</version>
		</dependency>

		<dependency>
			<!-- semantic version parsing and comparison -->
			<groupId>com.vdurmont</groupId>
			<artifactId>semver4j</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<!-- parsing and validation of json schema -->
			<groupId>com.networknt</groupId>
			<artifactId>json-schema-validator</artifactId>
			<version>1.0.74</version>
		</dependency>

		<dependency>
			<groupId>com.flipkart.zjsonpatch</groupId>
			<artifactId>zjsonpatch</artifactId>
			<version>0.4.13</version>
		</dependency>

		<dependency>
			<groupId>com.fasterxml.jackson.datatype</groupId>
			<artifactId>jackson-datatype-jsr310</artifactId>
		</dependency>

		<dependency>
			<!-- key generator for small(er) ids than UUID -->
			<groupId>com.aventrix.jnanoid</groupId>
			<artifactId>jnanoid</artifactId>
			<version>2.0.0</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-text</artifactId>
			<version>1.10.0</version>
		</dependency>

		<!-- Testing Dependencies -->

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<!-- forced version up to get support for generated columns -->
			<version>2.1.210</version>
			<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.awaitility</groupId>
			<artifactId>awaitility</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.github.fridujo</groupId>
			<artifactId>rabbitmq-mock</artifactId>
			<version>1.2.0</version>
			<scope>test</scope>
		</dependency>

		<!-- Documentation Dependencies -->

		<dependency>
			<groupId>capital.scalable</groupId>
			<artifactId>spring-auto-restdocs-core</artifactId>
			<version>2.0.5</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.restdocs</groupId>
			<artifactId>spring-restdocs-mockmvc</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>it.ozimov</groupId>
			<artifactId>embedded-redis</artifactId>
			<version>0.7.3</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springdoc</groupId>
			<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
			<version>${springdoc-openapi.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springdoc</groupId>
			<artifactId>springdoc-openapi-starter-common</artifactId>
			<version>${springdoc-openapi.version}</version>
			<scope>test</scope>
		</dependency>

	</dependencies>


	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>software.amazon.awssdk</groupId>
				<artifactId>bom</artifactId>
				<version>2.20.62</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<resources>
			<resource>
				<!-- Apply property filtering on the openapi yaml files to set the version -->
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>static/docs/*.yaml</include>
					<include>application*.properties</include> <!-- Spring Boot plugin adds these by default -->
					<include>application*.yml</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>false</filtering>
				<excludes>
					<exclude>static/docs/*.yaml</exclude>
					<exclude>application*.properties</exclude>
					<exclude>application*.yml</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<!--  provides Spring Boot support in Maven, letting you package executable jar or war archives and run an application “in-place” -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>build-info</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- will provide git information in the healthcheck endpoint -->
			<plugin>
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
				<version>4.9.10</version>
			</plugin>

		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.sonarsource.scanner.maven</groupId>
					<artifactId>sonar-maven-plugin</artifactId>
					<version>3.9.1.2184</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>


	<profiles>
		<profile>
			<id>test</id>
			<build>
				<plugins>
					<plugin>
						<groupId>pl.project13.maven</groupId>
						<artifactId>git-commit-id-plugin</artifactId>
						<configuration>
							<skip>true</skip>
						</configuration>
					</plugin>

					<!-- Surefire Plugin is used during the test phase of the build lifecycle to execute the unit tests of an application. It generates reports. -->
					<plugin>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<includes>
								<include>**/*Test.java</include>
							</includes>
							<systemPropertyVariables>
								<org.springframework.restdocs.outputDir>
                  ${project.build.directory}/generated-snippets
                </org.springframework.restdocs.outputDir>
								<org.springframework.restdocs.javadocJsonDir>
                  ${project.build.directory}/generated-javadoc-json
                </org.springframework.restdocs.javadocJsonDir>
							</systemPropertyVariables>
						</configuration>
						<dependencies>
							<dependency>
								<groupId>org.junit.platform</groupId>
								<artifactId>junit-platform-surefire-provider</artifactId>
								<version>1.2.0</version>
							</dependency>
						</dependencies>
					</plugin>
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<version>0.8.8</version>
						<executions>
							<execution>
								<goals>
									<goal>prepare-agent</goal>
								</goals>
							</execution>
							<execution>
								<id>report</id>
								<phase>prepare-package</phase>
								<goals>
									<goal>report</goal>
								</goals>
							</execution>
							<execution>
								<id>post-unit-test</id>
								<phase>verify</phase>
								<goals>
									<goal>report</goal>
								</goals>
								<configuration>
									<!-- Sets the path to the file which contains the execution
                    data. -->
									<dataFile>target/jacoco.exec</dataFile>
									<!-- Sets the output directory for the code coverage report. -->
									<outputDirectory>target/jacoco-ut</outputDirectory>
								</configuration>
							</execution>
						</executions>
					</plugin>

				</plugins>
			</build>
		</profile>

		<profile>
			<id>dependency_check</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.owasp</groupId>
						<artifactId>dependency-check-maven</artifactId>
						<version>7.4.4</version>
						<configuration>
							<!-- Fail Build On CVSS core more then 8.0 which is HIGH-->
							<!-- <failBuildOnCVSS>8</failBuildOnCVSS> -->
							<!-- Generate all report formats -->
							<format>ALL</format>
							<!-- Don't use Nexus Analyzer -->
							<centralAnalyzerEnabled>false</centralAnalyzerEnabled>
							<ossindexAnalyzerEnabled>false</ossindexAnalyzerEnabled>
							<!-- Am I the latest version? -->
							<versionCheckEnabled>true</versionCheckEnabled>
							<!--suppression Files -->
							<suppressionFiles>src/main/resources/suppressed.xml</suppressionFiles>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>xml-maven-plugin</artifactId>
						<configuration>
							<transformationSets>
								<transformationSet>
									<dir>${project.build.directory}</dir>
									<includes>
										<include>dependency-check-report.xml</include>
									</includes>
									<stylesheet>src/main/resources/dependencycheck_to_pmd.xsl</stylesheet>
									<outputDir>target</outputDir>
									<fileMappers>
										<fileMapper implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">
											<targetName>dependency-check-report-pmd.xml</targetName>
										</fileMapper>
									</fileMappers>
								</transformationSet>
							</transformationSets>
						</configuration>
						<dependencies>
							<dependency>
								<groupId>net.sf.saxon</groupId>
								<artifactId>saxon</artifactId>
								<version>8.7</version>
							</dependency>
						</dependencies>
					</plugin>

				</plugins>
			</build>
		</profile>

		<profile>
			<id>docs</id>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-javadoc-plugin</artifactId>
						<extensions>true</extensions>
						<executions>
							<execution>
								<id>generate-javadoc-json</id>
								<phase>compile</phase>
								<goals>
									<goal>javadoc-no-fork</goal>
									<goal>test-javadoc-no-fork</goal>
								</goals>
								<configuration>
									<doclet>capital.scalable.restdocs.jsondoclet.ExtractDocumentationAsJsonDoclet</doclet>
									<docletArtifact>
										<groupId>capital.scalable</groupId>
										<artifactId>spring-auto-restdocs-json-doclet-jdk9</artifactId>
										<version>2.0.11</version>
									</docletArtifact>
									<destDir>generated-javadoc-json</destDir>
									<reportOutputDirectory>${project.build.directory}</reportOutputDirectory>
									<useStandardDocletOptions>false</useStandardDocletOptions>
									<show>package</show>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.asciidoctor</groupId>
						<artifactId>asciidoctor-maven-plugin</artifactId>
						<version>2.2.3</version>
						<executions>
							<execution>
								<id>generate-docs</id>
								<phase>prepare-package</phase>
								<goals>
									<goal>process-asciidoc</goal>
								</goals>
								<configuration>
									<backend>html</backend>
									<doctype>book</doctype>
									<sourceDirectory>src/main/asciidoc</sourceDirectory>
									<sourceDocumentName>index.adoc</sourceDocumentName>
									<attributes>
										<snippets>${snippetsDirectory}</snippets>
										<googleAnalyticsId>G-XZCJBSHKV1</googleAnalyticsId>
									</attributes>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-resources-plugin</artifactId>
						<executions>
							<execution>
								<id>copy-generated-api-docs-to-static-docs</id>
								<phase>prepare-package</phase>
								<goals>
									<goal>copy-resources</goal>
								</goals>
								<configuration>
									<outputDirectory>${project.build.outputDirectory}/static/v2/docs</outputDirectory>
									<resources>
										<resource>
											<directory>${project.build.directory}/generated-docs</directory>
										</resource>
									</resources>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>exec-maven-plugin</artifactId>
						<groupId>org.codehaus.mojo</groupId>
						<executions>
							<execution>
								<!-- Run our version calculation script -->
								<id>OpenAPI Endpoint Check</id>
								<phase>generate-sources</phase>
								<goals>
									<goal>exec</goal>
								</goals>
								<configuration>
									<executable>${basedir}/src/test/resources/openapi/checkForUpdatedPaths.sh</executable>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>coreClient</id>
			<properties>
				<openapi-generator-version>6.0.1</openapi-generator-version>
				<swagger-core-version>1.6.5</swagger-core-version>
				<coreOpenApiUri>${project.build.directory}/classes/static/v2/docs/openapi-v3.yaml</coreOpenApiUri>
				<coreOpenApiAdminUri>${project.build.directory}/classes/static/v2/docs/openapi-admin-v3.yaml</coreOpenApiAdminUri>
			</properties>
			<dependencies>
				<!-- OpenAPI generated source dependencies -->
				<dependency>
					<groupId>io.swagger</groupId>
					<artifactId>swagger-annotations</artifactId>
					<version>${swagger-core-version}</version>
				</dependency>
				<dependency>
					<groupId>org.openapitools</groupId>
					<artifactId>jackson-databind-nullable</artifactId>
					<version>0.2.1</version>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<!-- Skip this plugin by running with -Dcodegen.skip -->
						<groupId>org.openapitools</groupId>
						<artifactId>openapi-generator-maven-plugin</artifactId>
						<version>${openapi-generator-version}</version>
						<executions>
							<execution>
								<id>genClient</id>
								<goals>
									<goal>generate</goal>
								</goals>
								<configuration>
									<inputSpec>${coreOpenApiUri}</inputSpec>
									<generatorName>java</generatorName>
									<output>${project.build.directory}/client</output>
									<apiPackage>io.netfoundry.core.client.api</apiPackage>
									<modelPackage>io.netfoundry.core.client.model</modelPackage>
									<groupId>${project.groupId}</groupId>
									<artifactId>${project.artifactId}-client</artifactId>
									<artifactVersion>${core.openapi.version}-SNAPSHOT</artifactVersion>
									<generateModelTests>false</generateModelTests>
									<generateApiTests>false</generateApiTests>
									<library>native</library>
									<configOptions>
										<serializationLibrary>jackson</serializationLibrary>
										<dateLibrary>java8</dateLibrary>
										<java8>true</java8>
									</configOptions>
								</configuration>
							</execution>
							<execution>
								<id>genAdminClient</id>
								<goals>
									<goal>generate</goal>
								</goals>
								<configuration>
									<inputSpec>${coreOpenApiAdminUri}</inputSpec>
									<generatorName>java</generatorName>
									<output>${project.build.directory}/admin-client</output>
									<apiPackage>io.netfoundry.core.client.admin.api</apiPackage>
									<modelPackage>io.netfoundry.core.client.admin.model</modelPackage>
									<groupId>${project.groupId}</groupId>
									<artifactId>${project.artifactId}-admin-client</artifactId>
									<artifactVersion>${core.openapi.version}-SNAPSHOT</artifactVersion>
									<generateModelTests>false</generateModelTests>
									<generateApiTests>false</generateApiTests>
									<library>native</library>
									<configOptions>
										<serializationLibrary>jackson</serializationLibrary>
										<dateLibrary>java8</dateLibrary>
										<java8>true</java8>
									</configOptions>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

</project>
