<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.qortal</groupId> <artifactId>qortal</artifactId> <version>3.8.9</version> <packaging>jar</packaging> <properties> <skipTests>true</skipTests> <altcoinj.version>7dc8c6f</altcoinj.version> <bitcoinj.version>0.15.10</bitcoinj.version> <bouncycastle.version>1.69</bouncycastle.version> <build.timestamp>${maven.build.timestamp}</build.timestamp> <ciyam-at.version>1.4.0</ciyam-at.version> <commons-net.version>3.6</commons-net.version> <commons-text.version>1.8</commons-text.version> <commons-io.version>2.6</commons-io.version> <commons-compress.version>1.21</commons-compress.version> <commons-lang3.version>3.12.0</commons-lang3.version> <xz.version>1.9</xz.version> <dagger.version>1.2.2</dagger.version> <guava.version>28.1-jre</guava.version> <hsqldb.version>2.5.1</hsqldb.version> <homoglyph.version>1.2.1</homoglyph.version> <icu4j.version>70.1</icu4j.version> <upnp.version>1.1</upnp.version> <jersey.version>2.29.1</jersey.version> <jetty.version>9.4.29.v20200521</jetty.version> <log4j.version>2.17.1</log4j.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <slf4j.version>1.7.12</slf4j.version> <swagger-api.version>2.0.9</swagger-api.version> <swagger-ui.version>3.23.8</swagger-ui.version> <package-info-maven-plugin.version>1.1.0</package-info-maven-plugin.version> <jsoup.version>1.13.1</jsoup.version> <java-diff-utils.version>4.10</java-diff-utils.version> <grpc.version>1.45.1</grpc.version> <protobuf.version>3.19.4</protobuf.version> </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> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.5</version> <configuration> <generateBackupPoms>false</generateBackupPoms> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>11</release> </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> <plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>4.0.0</version> <executions> <execution> <id>get-the-git-infos</id> <goals> <goal>revision</goal> </goals> <phase>initialize</phase> </execution> </executions> <configuration> <generateGitPropertiesFile>true</generateGitPropertiesFile> <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename> <includeOnlyProperties> <includeOnlyProperty>^git.commit.time$</includeOnlyProperty> <includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty> </includeOnlyProperties> <dateFormat>yyyyMMddHHmmss</dateFormat> <dateFormatTimeZone>UTC</dateFormatTimeZone> <gitDescribe> <dirty>-devel</dirty> </gitDescribe> <commitIdGenerationMode>full</commitIdGenerationMode> <injectAllReactorProjects>true</injectAllReactorProjects> <offline>true</offline> <skipPoms>false</skipPoms> </configuration> </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> <id>replace-swagger-ui</id> <phase>generate-resources</phase> <goals> <goal>replace</goal> </goals> <inherited>false</inherited> <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> </execution> <execution> <id>replace-git-resources</id> <phase>generate-resources</phase> <goals> <goal>replace</goal> </goals> <inherited>false</inherited> <configuration> <file>${project.build.outputDirectory}/git.properties</file> <regex>true</regex> <regexFlags><regexFlag>MULTILINE</regexFlag></regexFlags> <replacements> <replacement> <token>^(#.*$[\n\r]*)</token> <value></value> </replacement> </replacements> </configuration> </execution> </executions> </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.qortal.data.**</pattern> <template>${project.build.sourceDirectory}/org/qortal/data/package-info.java</template> </package> <package> <pattern>org.qortal.api.model**</pattern> <template>${project.build.sourceDirectory}/org/qortal/data/package-info.java</template> </package> <package> <pattern>org.qortal.api.model.**</pattern> <template>${project.build.sourceDirectory}/org/qortal/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.2.0</version> <configuration> <archive> <manifest> <addDefaultEntries>false</addDefaultEntries> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> <manifestEntries> <Last-Commit-Id>${git.commit.id.full}</Last-Commit-Id> <Last-Commit-Time>${git.commit.time}</Last-Commit-Time> <Reproducible-Build>true</Reproducible-Build> </manifestEntries> </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> <!-- Don't include JUnit as it's for testing only! --> <exclude>junit:junit</exclude> </excludes> </artifactSet> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> <exclude>**/*.js.map</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.qortal.controller.Controller</mainClass> <manifestEntries> <Multi-Release>true</Multi-Release> <Class-Path>. ..</Class-Path> </manifestEntries> </transformer> </transformers> </configuration> </execution> </executions> </plugin> <plugin> <groupId>io.github.zlika</groupId> <artifactId>reproducible-build-maven-plugin</artifactId> <version>0.11</version> <executions> <execution> <phase>package</phase> <id>strip-jar</id> <goals> <goal>strip-jar</goal> </goals> <configuration> <zipDateTime>${git.commit.time}</zipDateTime> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <skipTests>${skipTests}</skipTests> </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> <!-- jitpack for build-on-demand of altcoinj --> <repository> <id>jitpack.io</id> <url>https://jitpack.io</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> <scope>provided</scope><!-- needed for build, not for runtime --> </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>${package-info-maven-plugin.version}</version> <scope>provided</scope><!-- needed for build, not for runtime --> </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>${ciyam-at.version}</version> </dependency> <!-- UPnP support --> <dependency> <groupId>com.dosse</groupId> <artifactId>WaifUPnP</artifactId> <version>${upnp.version}</version> </dependency> <!-- Bitcoin support --> <dependency> <groupId>org.bitcoinj</groupId> <artifactId>bitcoinj-core</artifactId> <version>${bitcoinj.version}</version> </dependency> <!-- For Litecoin, etc. support, requires bitcoinj --> <dependency> <groupId>com.github.qortal</groupId> <artifactId>altcoinj</artifactId> <version>${altcoinj.version}</version> </dependency> <!-- Utilities --> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20210307</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>${commons-text.version}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>${commons-compress.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>org.tukaani</groupId> <artifactId>xz</artifactId> <version>${xz.version}</version> </dependency> <!-- For bitset/bitmap compression --> <dependency> <groupId>io.druid</groupId> <artifactId>extendedset</artifactId> <version>0.12.3</version> <exclusions> <!-- exclude old versions of jackson-annotations / jackson-core --> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </exclusion> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </exclusion> <!-- exclude Netty, as included by io.druid.java.util --> <exclusion> <groupId>io.netty</groupId> <artifactId>netty</artifactId> </exclusion> <!-- exclude async-http-client, as included by io.druid.java.util --> <exclusion> <groupId>org.asynchttpclient</groupId> <artifactId>async-http-client</artifactId> </exclusion> <exclusion> <groupId>io.druid</groupId> <artifactId>java-util</artifactId> </exclusion> </exclusions> </dependency> <!-- For NTP --> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>${commons-net.version}</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</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> <!-- Unicode homoglyph utilities --> <dependency> <groupId>net.codebox</groupId> <artifactId>homoglyph</artifactId> <version>${homoglyph.version}</version> </dependency> <!-- Unicode support --> <dependency> <groupId>com.ibm.icu</groupId> <artifactId>icu4j</artifactId> <version>${icu4j.version}</version> </dependency> <dependency> <groupId>com.ibm.icu</groupId> <artifactId>icu4j-charset</artifactId> <version>${icu4j.version}</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> <!-- Websocket support --> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>javax-websocket-server-impl</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> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>${jsoup.version}</version> </dependency> <dependency> <groupId>io.github.java-diff-utils</groupId> <artifactId>java-diff-utils</artifactId> <version>${java-diff-utils.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>${protobuf.version}</version> </dependency> </dependencies> </project>