<?xml version="1.0"?>
<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>io.earcam.maven</groupId>
		<artifactId>io.earcam.maven.pom</artifactId>
		<version>2.2.3</version>
	</parent>

	<groupId>io.earcam</groupId>
	<artifactId>io.earcam.utilitarian</artifactId>
	<version>1.2.1</version>
	<packaging>pom</packaging>

	<description>Utility code, comprised of modules too small to warrant separate incubator projects</description>
	<url>${site.url}${earcam.project.name.short}</url>
	<inceptionYear>2017</inceptionYear>

	<modules>
		<module>io.earcam.utilitarian.io</module>
		<module>io.earcam.utilitarian.io.file</module>
		<module>io.earcam.utilitarian.net</module>
		<module>io.earcam.utilitarian.web.jaxrs</module>
		<module>io.earcam.utilitarian.charstar</module>
		<module>io.earcam.utilitarian.security</module>
		<module>io.earcam.utilitarian.log.slf4j</module>
		<module>io.earcam.utilitarian.site.search.offline</module>
		<module>io.earcam.utilitarian.site.deploy.netlify</module>
		<module>io.earcam.utilitarian.site.sitemap</module>
	</modules>

	<scm>
		<connection>scm:git:git://bitbucket.org/${coordinate.username.project}.git</connection>
		<developerConnection>scm:git:ssh://bitbucket.org:${coordinate.username.project}.git</developerConnection>
		<url>http://bitbucket.org/${coordinate.username.project}/tree/master</url>
		<tag>v1.2.1</tag>
	</scm>
	<issueManagement>
		<system>BitBucket</system>
		<url>https://bitbucket.org/${coordinate.username.project}/issues</url>
	</issueManagement>
	<ciManagement>
		<system>Travis</system>
		<url>https://travis-ci.org/${coordinate.username.project}</url>
	</ciManagement>
	<distributionManagement>
		<site>
			<id>netlify</id>
			<url>${site.url}</url>
		</site>
	</distributionManagement>

	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>

		<version.slf4j>[1.7.25,2.0)</version.slf4j>
		
		<version.jersey>2.27</version.jersey>
		<version.jackson>2.8.4</version.jackson>
		<version.swagger.core>2.0.0-rc1</version.swagger.core>
		<version.bouncy.castle>1.60</version.bouncy.castle>
		<version.lucene>7.5.0</version.lucene>
		<version.jsoup>1.11.3</version.jsoup>
		<version.pdfbox>2.0.12</version.pdfbox>
		<version.unexceptional>1.0.0</version.unexceptional>

		<site.url>https://utilitarian.earcam.io/</site.url>

		<earcam.project.root.artifactId>io.earcam.utilitarian</earcam.project.root.artifactId>
		<coordinate.username.project>earcam/${earcam.project.root.artifactId}</coordinate.username.project>
		<earcam.project.name.short />

		<skip.execution.pitest>true</skip.execution.pitest>

		<java.home.8>/usr/lib/jvm/java-8-oracle</java.home.8>
		<java.home.11>/usr/lib/jvm/java-11-oracle</java.home.11>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>io.earcam</groupId>
				<artifactId>io.earcam.unexceptional</artifactId>
				<version>${version.unexceptional}</version>
			</dependency>

			<dependency>
				<groupId>com.google.code.findbugs</groupId>
				<artifactId>jsr305</artifactId>
				<version>3.0.2</version>
				<scope>provided</scope>
				<optional>true</optional>
			</dependency>

			<dependency>
				<groupId>javax.annotation</groupId>
				<artifactId>javax.annotation-api</artifactId>
				<version>1.3.2</version>
				<scope>provided</scope>
			</dependency>

			<dependency>
				<groupId>org.junit</groupId>
				<artifactId>junit-bom</artifactId>
				<version>5.3.1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<dependency>
				<groupId>org.hamcrest</groupId>
				<artifactId>java-hamcrest</artifactId>
				<version>2.0.0.0</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-core</artifactId>
				<version>2.22.0</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${version.slf4j}</version>
				<scope>provided</scope>
			</dependency>

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jcl-over-slf4j</artifactId>
				<version>${version.slf4j}</version>
				<scope>runtime</scope>
				<optional>true</optional>
			</dependency>

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jul-to-slf4j</artifactId>
				<version>${version.slf4j}</version>
				<scope>runtime</scope>
				<optional>true</optional>
			</dependency>

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-simple</artifactId>
				<version>${version.slf4j}</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>com.github.tomakehurst</groupId>
				<artifactId>wiremock</artifactId>
				<version>2.19.0</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>javax.ws.rs</groupId>
				<artifactId>javax.ws.rs-api</artifactId>
				<version>2.1.1</version>
			</dependency>

			<dependency>
				<groupId>javax.xml.bind</groupId>
				<artifactId>jaxb-api</artifactId>
				<version>2.3.1</version>
			</dependency>

			<dependency>
				<groupId>org.glassfish.jaxb</groupId>
				<artifactId>jaxb-runtime</artifactId>
				<version>2.4.0-b180830.0438</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>javax.json.bind</groupId>
				<artifactId>javax.json.bind-api</artifactId>
				<version>1.0</version>
			</dependency>

			<dependency>
				<groupId>org.eclipse</groupId>
				<artifactId>yasson</artifactId>
				<version>1.0.1</version>
				<scope>runtime</scope>
				<exclusions>
					<exclusion>
						<groupId>javax.enterprise</groupId>
						<artifactId>cdi-api</artifactId>
					</exclusion>
	
					<exclusion>
						<groupId>javax.el</groupId>
						<artifactId>javax.el-api</artifactId>
					</exclusion>
	
					<exclusion>
						<groupId>javax.interceptor</groupId>
						<artifactId>javax.interceptor-api</artifactId>
					</exclusion>
	
					<exclusion>
						<groupId>javax.inject</groupId>
						<artifactId>javax.inject</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-client</artifactId>
				<version>${version.jersey}</version>
			</dependency>

			<dependency>
				<groupId>org.glassfish.jersey.inject</groupId>
				<artifactId>jersey-hk2</artifactId>
				<version>${version.jersey}</version>
			</dependency>

			<dependency>
				<groupId>javax.json</groupId>
				<artifactId>javax.json-api</artifactId>
				<version>1.1.2</version>
			</dependency>

			<dependency>
				<groupId>org.glassfish</groupId>
				<artifactId>javax.json</artifactId>
				<version>1.1.2</version>
				<scope>runtime</scope>
				<optional>true</optional>
			</dependency>

			<dependency>
				<groupId>org.apache.lucene</groupId>
				<artifactId>lucene-analyzers-common</artifactId>
				<version>${version.lucene}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.lucene</groupId>
				<artifactId>lucene-core</artifactId>
				<version>${version.lucene}</version>
			</dependency>
	
			<dependency>
				<groupId>org.jsoup</groupId>
				<artifactId>jsoup</artifactId>
				<version>${version.jsoup}</version>
			</dependency>
	
			<dependency>
				<groupId>org.apache.pdfbox</groupId>
				<artifactId>pdfbox</artifactId>
				<version>${version.pdfbox}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.pdfbox</groupId>
				<artifactId>xmpbox</artifactId>
				<version>${version.pdfbox}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.pdfbox</groupId>
				<artifactId>fontbox</artifactId>
				<version>${version.pdfbox}</version>
			</dependency>

			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcprov-ext-jdk15on</artifactId>
				<version>${version.bouncy.castle}</version>
			</dependency>
		
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcprov-jdk15on</artifactId>
				<version>${version.bouncy.castle}</version>
			</dependency>
		
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcpg-jdk15on</artifactId>
				<version>${version.bouncy.castle}</version>
			</dependency>
		
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcpkix-jdk15on</artifactId>
				<version>${version.bouncy.castle}</version>
			</dependency>
		
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bctls-jdk15on</artifactId>
				<version>${version.bouncy.castle}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-scm-plugin</artifactId>
										<versionRange>[1.9.5,)</versionRange>
										<goals>
											<goal>checkout</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>io.swagger</groupId>
										<artifactId>swagger-codegen-maven-plugin</artifactId>
										<versionRange>[2.2.2,)</versionRange>
										<goals>
											<goal>generate</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<execute>
											<runOnConfiguration>true</runOnConfiguration>
										</execute>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.7.0</version>
					<configuration>
						<source>${maven.compiler.source}</source>
						<target>${maven.compiler.target}</target>
						<encoding>${project.build.sourceEncoding}</encoding>
						<showDeprecation>true</showDeprecation>
						<showWarnings>true</showWarnings>
						<compilerArgument>-Xlint:all</compilerArgument>
					</configuration>
				</plugin>

				<plugin>
					<groupId>org.apache.felix</groupId>
					<artifactId>maven-bundle-plugin</artifactId>
					<version>3.5.0</version>
					<extensions>true</extensions>
					<configuration>
						<archive>
							<addMavenDescriptor>true</addMavenDescriptor>
						</archive>
						<supportedProjectTypes>
							<supportedProjectType>jar</supportedProjectType>
						</supportedProjectTypes>
						<instructions>
							<Automatic-Module-Name>${project.artifactId}</Automatic-Module-Name>
							<Adds-Exports>${project.artifactId}</Adds-Exports>

							<Bundle-Vendor>${project.developers[0].name} - ${project.organization.name}</Bundle-Vendor>
							<Bundle-ContactAddress>${project.organization.url}</Bundle-ContactAddress>
							<Bundle-Description>${project.description}</Bundle-Description>
							<Bundle-DocURL>${project.url}</Bundle-DocURL>
							<Bundle-Category>${project.groupId}</Bundle-Category>
							<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
							<Bundle-Version>${project.version}</Bundle-Version>
						</instructions>
					</configuration>
					<executions>
						<execution>
							<id>create-manifest</id>
							<phase>prepare-package</phase>
							<goals>
								<goal>manifest</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>3.1.0</version>
					<configuration>
						<archive>
							<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
						</archive>
					</configuration>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.22.0</version>
					<inherited>true</inherited>
					<executions>
						<execution>
							<id>default-test</id>
							<goals>
								<goal>test</goal>
							</goals>
							<configuration>
								<jvm>${java.home.8}/bin/java</jvm>
							</configuration>
						</execution>
						<execution>
							<id>jdk11-test</id>
							<goals>
								<goal>test</goal>
							</goals>
							<configuration>
								<jvm>${java.home.11}/bin/java</jvm>
							</configuration>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<profiles>
		<profile>
			<id>post-site</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			
			<build>
				<defaultGoal>validate</defaultGoal>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>exec-maven-plugin</artifactId>
						<version>1.6.0</version>
						<inherited>false</inherited>
						<executions>
							<execution>
								<id>generate-search-json</id>
								<goals>
									<goal>exec</goal>
								</goals>
								<phase>validate</phase>
								<configuration>
									<executable>java</executable>
									<arguments>
										<argument>-jar</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.site.search.offline/target/io.earcam.utilitarian.site.search.offline-${project.version}-uber.jar</argument>
									
										<argument>${project.reporting.outputDirectory}</argument>
		
										<argument>${project.reporting.outputDirectory}@/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.io/target/site/@/io/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.io.file/target/site/@/io/file</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.log.slf4j/target/site/@/log/slf4j/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.net/target/site/@/net/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.site.deploy.netlify/target/site/@/site/deploy/netlify/</argument>
		
										<argument>${project.basedir}/io.earcam.utilitarian.site.search.offline/target/site/@/site/search/offline/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.site.sitemap/target/site/@/site/sitemap/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.web.jaxrs/target/site/@/web/jaxrs/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.security/target/site/@/security/</argument>
										<argument>${project.basedir}/io.earcam.utilitarian.charstar/target/site/@/charstar/</argument>
									</arguments>
									<successCodes>
										<successCode>0</successCode>
									</successCodes>
								</configuration>
							</execution>
						</executions>
					</plugin>
					
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-antrun-plugin</artifactId>
						<version>1.8</version>
						<inherited>false</inherited>
						<executions>
							<execution>
								<id>copy-ui-script</id>
								<goals>
									<goal>run</goal>
								</goals>
								<phase>validate</phase>
								<configuration>
									<target>
										<copy todir="${project.reporting.outputDirectory}/js/">
											<fileset dir="io.earcam.utilitarian.site.search.offline/src/main/resources/META-INF/resources/js/" includes="ui.search.lunr.js" />
										</copy>
									</target>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>		
			</build>
		</profile>	
	</profiles>
</project>
