<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 > org.qora</groupId>
<artifactId > qora-core</artifactId>
<version > 2.0.0-SNAPSHOT</version>
<packaging > jar</packaging>
<properties >
<project.build.sourceEncoding > UTF-8</project.build.sourceEncoding>
<bouncycastle.version > 1.61</bouncycastle.version>
<dagger.version > 1.2.2</dagger.version>
<hsqldb.version > r5836</hsqldb.version>
<sqltool.version > 2.4.1</sqltool.version>
<jetty.version > 9.4.12.v20180830</jetty.version>
<jersey.version > 2.27</jersey.version>
<log4j.version > 2.11.0</log4j.version>
<slf4j.version > 1.7.12</slf4j.version>
<swagger-api.version > 2.0.6</swagger-api.version>
<swagger-ui.version > 3.19.0</swagger-ui.version>
<felix-bundle-plugin.version > 3.5.0</felix-bundle-plugin.version>
<package-info-maven-plugin.version > 1.0.2-m2e</package-info-maven-plugin.version>
<build.timestamp > ${maven.build.timestamp}</build.timestamp>
</properties>
<build >
<sourceDirectory > src/main/java</sourceDirectory>
<testSourceDirectory > src/test/java</testSourceDirectory>
<resources >
<resource >
<directory > ${basedir}/src/main/resources</directory>
<filtering > true</filtering>
</resource>
</resources>
<plugins >
<plugin >
<artifactId > maven-compiler-plugin</artifactId>
<version > 3.5.1</version>
<configuration >
<source > 1.8</source>
<target > 1.8</target>
</configuration>
</plugin>
<!-- unpack swagger - ui to target folder -->
<plugin >
<artifactId > maven-dependency-plugin</artifactId>
<executions >
<execution >
<id > swagger ui</id>
<phase > generate-resources</phase>
<goals >
<goal > unpack</goal>
</goals>
<configuration >
<artifactItems >
<artifactItem >
<groupId > org.webjars</groupId>
<artifactId > swagger-ui</artifactId>
<version > ${swagger-ui.version}</version>
</artifactItem>
</artifactItems>
<outputDirectory > ${project.build.directory}/swagger-ui.unpacked</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- inject correct url to swagger json file into swagger - ui -->
<plugin >
<groupId > com.google.code.maven-replacer-plugin</groupId>
<artifactId > replacer</artifactId>
<version > 1.5.3</version>
<executions >
<execution >
<phase > generate-resources</phase>
<goals >
<goal > replace</goal>
</goals>
</execution>
</executions>
<configuration >
<file > ${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/index.html</file>
<replacements >
<replacement >
<token > https://petstore.swagger.io/v2/swagger.json</token>
<value > /openapi.json</value>
</replacement>
<replacement >
<token > Swagger UI</token>
<value > API Documentation</value>
</replacement>
<replacement >
<token > deepLinking: true,</token>
<value >
deepLinking: true,
tagsSorter: "alpha",
operationsSorter:
"alpha",
</value>
</replacement>
</replacements>
</configuration>
</plugin>
<!-- add swagger - ui as resource to output package -->
<plugin >
<artifactId > maven-resources-plugin</artifactId>
<version > 3.1.0</version>
<executions >
<execution >
<id > copy-resources</id>
<phase > generate-resources</phase>
<goals >
<goal > copy-resources</goal>
</goals>
<configuration >
<outputDirectory > ${project.build.directory}/classes/resources/swagger-ui</outputDirectory>
<resources >
<resource >
<directory > ${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!-- Generate package - info.java files for JAXB, to convert byte[] to/from
Base58 -->
<plugin >
<groupId > com.github.bohnman</groupId>
<artifactId > package-info-maven-plugin</artifactId>
<version > ${package-info-maven-plugin.version}</version>
<configuration >
<packages >
<package >
<pattern > org.qora.data.**</pattern>
<template > ${project.build.sourceDirectory}/org/qora/data/package-info.java</template>
</package>
<package >
<pattern > org.qora.api.model**</pattern>
<template > ${project.build.sourceDirectory}/org/qora/data/package-info.java</template>
</package>
</packages>
<outputDirectory > ${project.build.directory}/generated-sources/package-info</outputDirectory>
</configuration>
<executions >
<execution >
<goals >
<goal > generate</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Include generated package - info.java sources in build -->
<plugin >
<groupId > org.codehaus.mojo</groupId>
<artifactId > build-helper-maven-plugin</artifactId>
<version > 3.0.0</version>
<executions >
<execution >
<phase > generate-sources</phase>
<goals >
<goal > add-source</goal>
</goals>
<configuration >
<sources >
<source > ${project.build.directory}/generated-sources/package-info</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin >
<groupId > org.apache.maven.plugins</groupId>
<artifactId > maven-jar-plugin</artifactId>
<version > 3.0.2</version>
<configuration >
<archive >
<manifest >
<addDefaultImplementationEntries > true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin >
<groupId > org.apache.maven.plugins</groupId>
<artifactId > maven-shade-plugin</artifactId>
<version > 2.4.3</version>
<configuration >
<createDependencyReducedPom > false</createDependencyReducedPom>
<artifactSet >
<excludes >
<!-- Don't include original swagger - UI as we're including our own
modified version -->
<exclude > org.webjars:swagger-ui</exclude>
</excludes>
</artifactSet>
<filters >
<filter >
<artifact > *:*</artifact>
<excludes >
<exclude > META-INF/*.SF</exclude>
<exclude > META-INF/*.DSA</exclude>
<exclude > META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions >
<execution >
<phase > package</phase>
<goals >
<goal > shade</goal>
</goals>
<configuration >
<transformers >
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass > org.qora.controller.Controller</mainClass>
<manifestEntries >
<Class-Path > . ..</Class-Path>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin >
<groupId > org.apache.felix</groupId>
<artifactId > maven-bundle-plugin</artifactId>
<version > ${felix-bundle-plugin.version}</version>
<extensions > true</extensions>
<configuration >
<instructions >
<Include-Resource >
{maven-resources}, {maven-dependencies}
</Include-Resource>
<Bundle-ClassPath > .,..,{maven-dependencies}</Bundle-ClassPath>
</instructions>
</configuration>
</plugin>
</plugins>
<pluginManagement >
<plugins >
<!-- This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. -->
<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-dependency-plugin
</artifactId>
<versionRange >
[2.8,)
</versionRange>
<goals >
<goal > unpack</goal>
</goals>
</pluginExecutionFilter>
<action >
<execute > </execute>
</action>
</pluginExecution>
<pluginExecution >
<pluginExecutionFilter >
<groupId >
com.google.code.maven-replacer-plugin
</groupId>
<artifactId >
replacer
</artifactId>
<versionRange >
[1.5.3,)
</versionRange>
<goals >
<goal > replace</goal>
</goals>
</pluginExecutionFilter>
<action >
<execute > </execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<repositories >
<repository >
<id > project.local</id>
<name > project</name>
<url > file:${project.basedir}/lib</url>
</repository>
</repositories>
<dependencies >
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/build - helper - maven - plugin -->
<dependency >
<groupId > org.codehaus.mojo</groupId>
<artifactId > build-helper-maven-plugin</artifactId>
<version > 3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.bohnman/package - info - maven - plugin -->
<dependency >
<groupId > com.github.bohnman</groupId>
<artifactId > package-info-maven-plugin</artifactId>
<version > 1.0.1</version>
</dependency>
<dependency >
<groupId > org.apache.felix</groupId>
<artifactId > maven-bundle-plugin</artifactId>
<version > 3.5.0</version>
</dependency>
<!-- HSQLDB for repository -->
<dependency >
<groupId > org.hsqldb</groupId>
<artifactId > hsqldb</artifactId>
<version > ${hsqldb.version}</version>
</dependency>
<dependency >
<groupId > org.hsqldb</groupId>
<artifactId > sqltool</artifactId>
<version > ${sqltool.version}</version>
<scope > test</scope>
</dependency>
<!-- CIYAM AT (automated transactions) -->
<dependency >
<groupId > org.ciyam</groupId>
<artifactId > at</artifactId>
<version > 1.0</version>
</dependency>
<!-- Bitcoin support -->
<dependency >
<groupId > org.bitcoinj</groupId>
<artifactId > bitcoinj-core</artifactId>
<version > 0.14.7</version>
</dependency>
<!-- Utilities -->
<dependency >
<groupId > com.googlecode.json-simple</groupId>
<artifactId > json-simple</artifactId>
<version > 1.1.1</version>
</dependency>
<dependency >
<groupId > org.apache.commons</groupId>
<artifactId > commons-text</artifactId>
<version > 1.4</version>
</dependency>
<dependency >
<groupId > commons-net</groupId>
<artifactId > commons-net</artifactId>
<version > 3.3</version>
</dependency>
<dependency >
<groupId > com.google.guava</groupId>
<artifactId > guava</artifactId>
<version > 25.0-jre</version>
</dependency>
<!-- Logging: log4j2 -->
<dependency >
<groupId > org.apache.logging.log4j</groupId>
<artifactId > log4j-core</artifactId>
<version > ${log4j.version}</version>
</dependency>
<dependency >
<groupId > org.apache.logging.log4j</groupId>
<artifactId > log4j-api</artifactId>
<version > ${log4j.version}</version>
</dependency>
<!-- redirect slf4j to log4j2 -->
<dependency >
<groupId > org.apache.logging.log4j</groupId>
<artifactId > log4j-slf4j-impl</artifactId>
<version > ${log4j.version}</version>
</dependency>
<!-- redirect java.utils.logging to log4j2 -->
<dependency >
<groupId > org.apache.logging.log4j</groupId>
<artifactId > log4j-jul</artifactId>
<version > ${log4j.version}</version>
</dependency>
<!-- Logging: slf4j used by Jetty/Jersey -->
<dependency >
<groupId > org.slf4j</groupId>
<artifactId > slf4j-api</artifactId>
<version > ${slf4j.version}</version>
</dependency>
<!-- Servlet related -->
<dependency >
<groupId > javax.servlet</groupId>
<artifactId > javax.servlet-api</artifactId>
<version > 4.0.1</version>
</dependency>
<dependency >
<groupId > javax.mail</groupId>
<artifactId > mail</artifactId>
<version > 1.5.0-b01</version>
</dependency>
<!-- Jetty -->
<dependency >
<groupId > org.eclipse.jetty</groupId>
<artifactId > jetty-server</artifactId>
<version > ${jetty.version}</version>
<classifier > config</classifier>
</dependency>
<dependency >
<groupId > org.eclipse.jetty</groupId>
<artifactId > jetty-servlet</artifactId>
<version > ${jetty.version}</version>
<type > jar</type>
</dependency>
<dependency >
<groupId > org.eclipse.jetty</groupId>
<artifactId > jetty-servlets</artifactId>
<version > ${jetty.version}</version>
</dependency>
<dependency >
<groupId > org.eclipse.jetty</groupId>
<artifactId > jetty-rewrite</artifactId>
<version > ${jetty.version}</version>
</dependency>
<dependency >
<groupId > org.eclipse.jetty</groupId>
<artifactId > jetty-client</artifactId>
<version > ${jetty.version}</version>
</dependency>
<!-- Jersey -->
<dependency >
<groupId > org.glassfish.jersey.core</groupId>
<artifactId > jersey-server</artifactId>
<version > ${jersey.version}</version>
</dependency>
<dependency >
<groupId > org.glassfish.jersey.containers</groupId>
<artifactId > jersey-container-servlet-core</artifactId>
<version > ${jersey.version}</version>
</dependency>
<dependency >
<groupId > org.glassfish.jersey.inject</groupId>
<artifactId > jersey-hk2</artifactId>
<version > ${jersey.version}</version>
<exclusions >
<exclusion > <!-- exclude javax.inject - 1.jar because other jersey modules include javax.inject v2+ -->
<groupId > javax.inject</groupId>
<artifactId > javax.inject</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency >
<groupId > org.glassfish.jersey.media</groupId>
<artifactId > jersey-media-moxy</artifactId>
<version > ${jersey.version}</version>
</dependency>
<dependency >
<groupId > org.glassfish.jersey.media</groupId>
<artifactId > jersey-media-multipart</artifactId>
<version > ${jersey.version}</version>
</dependency>
<!-- Swagger OpenAPI implementation -->
<dependency >
<groupId > io.swagger.core.v3</groupId>
<artifactId > swagger-jaxrs2</artifactId>
<version > ${swagger-api.version}</version>
</dependency>
<dependency >
<groupId > io.swagger.core.v3</groupId>
<artifactId > swagger-jaxrs2-servlet-initializer</artifactId>
<version > ${swagger-api.version}</version>
<exclusions >
<exclusion > <!-- excluded because included in swagger - jaxrs2 - servlet - initializer -->
<groupId > io.swagger.core.v3</groupId>
<artifactId > swagger-integration</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency >
<groupId > org.webjars</groupId>
<artifactId > swagger-ui</artifactId>
<version > ${swagger-ui.version}</version>
</dependency>
<!-- Testing -->
<!-- disabled pending better Eclipse support
<dependency >
<groupId > org.junit.jupiter</groupId>
<artifactId > junit-jupiter-engine</artifactId>
<version > 5.3.1</version>
</dependency>
<dependency >
<groupId > org.hamcrest</groupId>
<artifactId > hamcrest-library</artifactId>
<version > 1.3</version>
</dependency>
-->
<!-- BouncyCastle for crypto, including TLS secure networking -->
<dependency >
<groupId > org.bouncycastle</groupId>
<artifactId > bcprov-jdk15on</artifactId>
<version > ${bouncycastle.version}</version>
</dependency>
<dependency >
<groupId > org.bouncycastle</groupId>
<artifactId > bctls-jdk15on</artifactId>
<version > ${bouncycastle.version}</version>
</dependency>
</dependencies>
</project>