<?xml version="1.0" encoding="UTF-8"?>
<!--
aoserv-client - Java client for the AOServ Platform.
Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022  AO Industries, Inc.
    support@aoindustries.com
    7262 Bull Pen Cir
    Mobile, AL 36695

This file is part of aoserv-client.

aoserv-client is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

aoserv-client is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with aoserv-client.  If not, see <https://www.gnu.org/licenses/>.
-->
<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>com.aoapps</groupId><artifactId>ao-oss-parent</artifactId><version>1.17.6<!-- -POST-SNAPSHOT --></version>
		<relativePath>../../oss/parent/pom.xml</relativePath>
	</parent>

	<groupId>com.aoindustries</groupId><artifactId>aoserv-client</artifactId><version>1.89.0</version>
	<packaging>bundle</packaging>

	<properties>
		<module.name>com.aoindustries.aoserv.client</module.name>
		<!-- Java 1.8 -->
		<javase.version>1.8</javase.version>
		<javase.release>8</javase.release>
		<javadoc.link.javase>${javadoc.link.javase.8}</javadoc.link.javase>
		<!-- This must be set in your ~/.m2/settings.xml when building with JDK < 9 -->
		<javase.bootclasspath>${javase.bootclasspath.8}</javase.bootclasspath>

		<javadoc.breadcrumbs><![CDATA[<a target="${javadoc.target}" href="https://aoindustries.com/aoserv/">AOServ</a>
/ <a target="${javadoc.target}" href="${project.url}">Client</a>]]></javadoc.breadcrumbs>
		<description.html><![CDATA[Java client for the <a target="${javadoc.target}" href="https://aoindustries.com/aoserv/">AOServ Platform</a>.]]></description.html>
		<!-- AOSH default to interactive mode, but allow overriding on command line -->
		<exec.args>-i</exec.args>
		<!-- TODO: Remove once moved to platform.aoapps.com -->
		<google.analytics.trackingId>UA-86871646-1</google.analytics.trackingId>
		<!-- com.aoindustries is on original Sonatype Nexus Repository Manager -->
		<nexusUrl>https://oss.sonatype.org/</nexusUrl>
		<!-- SonarQube -->
		<sonar.projectKey>com.aoapps.platform:aoapps-client<!-- TODO: ${project.groupId}:${project.artifactId} --></sonar.projectKey>
		<sonar.organization>ao-apps</sonar.organization>
		<sonar.host.url>https://sonarcloud.io</sonar.host.url>
	</properties>

	<name>AOServ Client</name>
	<url>https://aoindustries.com/aoserv/client/</url>
	<description>Java client for the AOServ Platform.</description>
	<inceptionYear>2000</inceptionYear>

	<licenses>
		<license>
			<name>GNU General Lesser Public License (LGPL) version 3.0</name>
			<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<organization>
		<name>AO Industries, Inc.</name>
		<url>https://aoindustries.com/</url>
	</organization>

	<developers>
		<developer>
			<name>AO Industries, Inc.</name>
			<email>support@aoindustries.com</email>
			<url>https://aoindustries.com/</url>
			<organization>AO Industries, Inc.</organization>
			<organizationUrl>https://aoindustries.com/</organizationUrl>
		</developer>
	</developers>

	<scm>
		<connection>scm:git:git://github.com/ao-apps/aoserv-client.git</connection>
		<developerConnection>scm:git:git@github.com:ao-apps/aoserv-client.git</developerConnection>
		<url>https://github.com/ao-apps/aoserv-client</url>
		<tag>aoserv-client-1.89.0</tag>
	</scm>

	<issueManagement>
		<system>GitHub Issues</system>
		<url>https://github.com/ao-apps/aoserv-client/issues</url>
	</issueManagement>

	<ciManagement>
		<system>Jenkins</system>
		<url>https://jenkins.aoindustries.com/job/ao/job/aoserv/job/client/</url>
	</ciManagement>
	<!-- Only one allowed in POM:
	<ciManagement>
		<system>GitHub Actions</system>
		<url>https://github.com/ao-apps/aoserv-client/actions</url>
	</ciManagement>
	-->

	<repositories>
		<!-- Repository required here, too, so can find parent -->
		<repository>
			<id>sonatype-nexus-snapshots-s01</id>
			<name>Sonatype Nexus Snapshots S01</name>
			<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
			<releases>
				<enabled>false</enabled>
			</releases>
			<snapshots>
				<checksumPolicy>fail</checksumPolicy>
			</snapshots>
		</repository>
	</repositories>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId>
				<configuration>
					<usedDependencies>
						<!-- Runtime Direct -->
						<dependency>com.aoapps:ao-style</dependency>
						<dependency>com.aoapps:ao-tlds</dependency><!-- Required for module-info.java -->
					</usedDependencies>
				</configuration>
			</plugin>
			<!-- Java 1.8: see https://maven.apache.org/plugins/maven-compiler-plugin/examples/module-info.html -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId>
				<executions>
					<!-- compile everything to ensure module-info contains right entries -->
					<execution>
						<id>default-compile</id>
						<configuration>
							<release>9</release>
						</configuration>
					</execution>
					<!-- recompile everything for target VM except the module-info.java -->
					<execution>
						<id>base-compile</id><goals><goal>compile</goal></goals>
						<configuration>
							<excludes>
								<exclude>module-info.java</exclude>
							</excludes>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<!-- Java 1.8: generate future-proof modular javadocs -->
					<source>11</source>
					<release>11</release>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId>
				<executions>
					<execution>
						<id>enforce-bytecode-version</id>
						<configuration>
							<rules>
								<enforceBytecodeVersion>
									<excludes>
										<!-- Allow higher Java version for ao-style, which is not included in binary releases -->
										<exclude>com.aoapps:ao-style</exclude>
									</excludes>
								</enforceBytecodeVersion>
							</rules>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!--
				Allows running AOSH directly from Maven.

				Defaults to command line argument "-i" for interactive mode.
				
				See https://stackoverflow.com/questions/9846046/run-main-class-of-maven-project
				See https://www.mojohaus.org/exec-maven-plugin/java-mojo.html#additionalClasspathElements
			-->
			<plugin>
				<groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId>
				<configuration>
					<mainClass>com.aoindustries.aoserv.client.aosh.AOSH</mainClass>
					<additionalClasspathElements>
						<additionalClasspathElement>${user.home}/.config/aoserv-client</additionalClasspathElement>
					</additionalClasspathElements>
					<cleanupDaemonThreads>false</cleanupDaemonThreads>
					<!-- Moved to exec.args property above to allow overridden on command line:
					<commandlineArgs>-i</commandlineArgs>
					-->
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>offlineLinks</id><activation><file><exists>src/main/java</exists></file></activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId>
						<executions>
							<execution>
								<id>unpack.offlineLinks</id><phase>prepare-package</phase><goals><goal>unpack</goal></goals>
								<configuration>
									<artifactItems>
										<!-- Direct -->
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-collections</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-collections</outputDirectory>
										</artifactItem>
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-hodgepodge</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-hodgepodge</outputDirectory>
										</artifactItem>
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-lang</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-lang</outputDirectory>
										</artifactItem>
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-net-types</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-net-types</outputDirectory>
										</artifactItem>
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-security</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-security</outputDirectory>
										</artifactItem>
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-sql</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-sql</outputDirectory>
										</artifactItem>
										<artifactItem>
											<groupId>com.aoapps</groupId><artifactId>ao-tlds</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/com.aoapps/ao-tlds</outputDirectory>
										</artifactItem>
										<!-- Test Direct -->
										<artifactItem>
											<groupId>junit</groupId><artifactId>junit</artifactId><classifier>javadoc</classifier>
											<includes>element-list, package-list</includes>
											<outputDirectory>${project.build.directory}/offlineLinks/junit/junit</outputDirectory>
										</artifactItem>
										<!-- No apidocs: <groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><classifier>javadoc</classifier> -->
									</artifactItems>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId>
						<configuration>
							<offlineLinks combine.children="append">
								<!-- Direct -->
								<offlineLink>
									<url>https://oss.aoapps.com/collections/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-collections</location>
								</offlineLink>
								<offlineLink>
									<url>https://oss.aoapps.com/hodgepodge/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-hodgepodge</location>
								</offlineLink>
								<offlineLink>
									<url>https://oss.aoapps.com/lang/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-lang</location>
								</offlineLink>
								<offlineLink>
									<url>https://oss.aoapps.com/net-types/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-net-types</location>
								</offlineLink>
								<offlineLink>
									<url>https://oss.aoapps.com/security/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-security</location>
								</offlineLink>
								<offlineLink>
									<url>https://oss.aoapps.com/sql/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-sql</location>
								</offlineLink>
								<offlineLink>
									<url>https://oss.aoapps.com/tlds/apidocs/</url>
									<location>${project.build.directory}/offlineLinks/com.aoapps/ao-tlds</location>
								</offlineLink>
								<!-- Test Direct -->
								<offlineLink>
									<url>https://junit.org/junit4/javadoc/latest/</url>
									<location>${project.build.directory}/offlineLinks/junit/junit</location>
								</offlineLink>
								<!-- No apidocs: <groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><classifier>javadoc</classifier> -->
							</offlineLinks>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<dependencyManagement>
		<dependencies>
			<!-- Direct -->
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-collections</artifactId><version>3.0.0<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-hodgepodge</artifactId><version>5.0.2<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-lang</artifactId><version>5.1.3<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-net-types</artifactId><version>2.0.2<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-security</artifactId><version>3.1.0<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-sql</artifactId><version>2.0.1<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-tlds</artifactId><version>2.0.0<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<!-- Transitive -->
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-tempfiles</artifactId><version>3.0.0<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<!-- Runtime Direct -->
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-style</artifactId><version>2.0.1<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<!-- Runtime Transitive -->
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-servlet-util</artifactId><version>5.0.1<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-web-resources-registry</artifactId><version>0.4.0<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>ao-web-resources-servlet</artifactId><version>0.5.0<!-- ${POST-SNAPSHOT} --></version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version>
			</dependency>
			<!-- javaee-web-api-bom: <groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId> -->
			<!-- javaee-web-api-bom: <groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId> -->
			<!-- Test Direct -->
			<dependency>
				<groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version>
			</dependency>
			<dependency>
				<groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
			</dependency>
			<!-- Test Transitive -->
			<dependency>
				<groupId>org.hamcrest</groupId><artifactId>hamcrest</artifactId><version>2.2</version>
			</dependency>
			<dependency>
				<!-- Shim for junit 4.13.2 -->
				<groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>2.2</version>
			</dependency>
			<dependency>
				<groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>3.19.4</version>
			</dependency>
			<!-- BOM -->
			<dependency>
				<groupId>com.aoapps</groupId><artifactId>javaee-web-api-bom</artifactId><version>7.0.1<!-- ${POST-SNAPSHOT} --></version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<!-- Direct -->
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-collections</artifactId>
		</dependency>
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-hodgepodge</artifactId>
		</dependency>
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-lang</artifactId>
		</dependency>
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-net-types</artifactId>
		</dependency>
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-security</artifactId>
		</dependency>
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-sql</artifactId>
		</dependency>
		<dependency>
			<groupId>com.aoapps</groupId><artifactId>ao-tlds</artifactId>
		</dependency>
		<!-- Runtime Direct -->
		<dependency>
			<!-- TODO: This is only used by SocketConnectionPool - worth having here at all?  Impact on transitive dependencies -->
			<groupId>com.aoapps</groupId><artifactId>ao-style</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<!-- Test Direct -->
		<dependency>
			<groupId>junit</groupId><artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
