forked from Qortal/qortal
7f4511cb7b
Some pom.xml changes to reduce maven-shade-plugin conflicting classes warnings. Repository now supports SAVEPOINT and ROLLBACK TO SAVEPOINT. HSQLDB concurrency/transaction model changed from LOCKS to MVCC to help with transaction deadlocks/rollbacks. More XXXs and TODOs added to Block.java for investigation/fix/improvements. Also used new repository SAVEPOINT feature when validating transactions instead of rolling back entire transaction. This fixes problem during synchronization where the rollback would undo previously synchronized, but not yet committed, blocks! Transactions orphaned by Block.orphan ARE now added to unconfirmed pile, unlike before. Concurrent lock now prevents simultaneous block generation and synchronization, including synchronization via multiple peers. Lots of new networking code: peer lists, block signatures, blocks, blockchain synchronization. PEERS_V2 message now supports hostnames, IPv6 and port numbers. Fixed bug with block serialization for transport over network.
451 lines
14 KiB
XML
451 lines
14 KiB
XML
<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.60</bouncycastle.version>
|
|
<dagger.version>1.2.2</dagger.version>
|
|
<hsqldb.version>r5836</hsqldb.version>
|
|
<jetty.version>9.4.11.v20180605</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>
|
|
<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>1.0.1</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>
|
|
</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>
|
|
<!-- 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 -->
|
|
<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>
|