/ pom.xml
pom.xml
  1  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2  	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3  	<modelVersion>4.0.0</modelVersion>
  4  	<groupId>org.forknet</groupId>
  5  	<artifactId>forknet</artifactId>
  6  	<version>0.3.0</version>
  7  	<packaging>jar</packaging>
  8  	<properties>
  9  		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 10  		<skipTests>true</skipTests>
 11  
 12  		<altcoinj.version>7dc8c6f</altcoinj.version>
 13  		<bitcoinj.version>0.15.10</bitcoinj.version>
 14  		<bouncycastle.version>1.70</bouncycastle.version>
 15  		<build.timestamp>${maven.build.timestamp}</build.timestamp>
 16  		<ciyam-at.version>1.4.2</ciyam-at.version>
 17  		<commons-net.version>3.8.0</commons-net.version>
 18  		<commons-text.version>1.12.0</commons-text.version>
 19  		<commons-io.version>2.18.0</commons-io.version>
 20  		<commons-compress.version>1.27.1</commons-compress.version>
 21  		<commons-lang3.version>3.17.0</commons-lang3.version>
 22  		<dagger.version>1.2.2</dagger.version>
 23  		<extendedset.version>0.12.3</extendedset.version>
 24  		<git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
 25  		<grpc.version>1.68.1</grpc.version>
 26  		<guava.version>33.3.1-jre</guava.version>
 27  		<hamcrest-library.version>2.2</hamcrest-library.version>
 28  		<homoglyph.version>1.2.1</homoglyph.version>
 29  		<hsqldb.version>2.7.4</hsqldb.version>
 30  		<icu4j.version>76.1</icu4j.version>
 31  		<java-diff-utils.version>4.15</java-diff-utils.version>
 32  		<javax.servlet-api.version>4.0.1</javax.servlet-api.version>
 33  		<jaxb-runtime.version>2.3.9</jaxb-runtime.version>
 34  		<jersey.version>2.42</jersey.version>
 35  		<jetty.version>9.4.56.v20240826</jetty.version>
 36  		<json-simple.version>1.1.1</json-simple.version>
 37  		<json.version>20240303</json.version>
 38  		<jsoup.version>1.18.1</jsoup.version>
 39  		<junit-jupiter-engine.version>5.11.0-M2</junit-jupiter-engine.version>
 40  		<lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
 41  		<log4j.version>2.23.1</log4j.version>
 42  		<mail.version>1.5.0-b01</mail.version>
 43  		<maven-build-helper-plugin.version>3.6.0</maven-build-helper-plugin.version>
 44  		<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
 45  		<maven-dependency-plugin.version>3.6.1</maven-dependency-plugin.version>
 46  		<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
 47  		<maven-package-info-plugin.version>1.1.0</maven-package-info-plugin.version>
 48  		<maven-plugin.version>2.18.0</maven-plugin.version>
 49  		<maven-reproducible-build-plugin.version>0.17</maven-reproducible-build-plugin.version>
 50  		<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
 51  		<maven-shade-plugin.version>3.6.0</maven-shade-plugin.version>
 52  		<maven-surefire-plugin.version>3.5.2</maven-surefire-plugin.version>
 53  		<protobuf.version>3.25.3</protobuf.version>
 54  		<replacer.version>1.5.3</replacer.version>
 55  		<simplemagic.version>1.17</simplemagic.version>
 56  		<slf4j.version>1.7.36</slf4j.version>
 57  		<sure-fire-plugin.version>2.22.2</sure-fire-plugin.version>
 58  		<swagger-api.version>2.0.10</swagger-api.version>
 59  		<swagger-ui.version>5.18.2</swagger-ui.version>
 60  		<upnp.version>1.2</upnp.version>
 61  		<xz.version>1.10</xz.version>
 62  	</properties>
 63  	<build>
 64  		<sourceDirectory>src/main/java</sourceDirectory>
 65  		<testSourceDirectory>src/test/java</testSourceDirectory>
 66  		<resources>
 67  			<resource>
 68  				<directory>${basedir}/src/main/resources</directory>
 69  				<filtering>true</filtering>
 70  			</resource>
 71  		</resources>
 72  		<plugins>
 73  			<plugin>
 74  				<groupId>org.codehaus.mojo</groupId>
 75  				<artifactId>versions-maven-plugin</artifactId>
 76  				<version>${maven-plugin.version}</version>
 77  				<configuration>
 78  					<generateBackupPoms>false</generateBackupPoms>
 79  				</configuration>
 80  			</plugin>
 81  			<plugin>
 82  				<artifactId>maven-compiler-plugin</artifactId>
 83  				<version>${maven-compiler-plugin.version}</version>
 84  				<configuration>
 85  					<release>11</release>
 86  				</configuration>
 87  			</plugin>
 88  			<!-- unpack swagger-ui to target folder -->
 89  			<plugin>
 90  				<artifactId>maven-dependency-plugin</artifactId>
 91  				<executions>
 92  					<execution>
 93  						<id>swagger ui</id>
 94  						<phase>generate-resources</phase>
 95  						<goals>
 96  							<goal>unpack</goal>
 97  						</goals>
 98  						<configuration>
 99  							<artifactItems>
100  								<artifactItem>
101  									<groupId>org.webjars</groupId>
102  									<artifactId>swagger-ui</artifactId>
103  									<version>${swagger-ui.version}</version>
104  								</artifactItem>
105  							</artifactItems>
106  							<outputDirectory>${project.build.directory}/swagger-ui.unpacked</outputDirectory>
107  						</configuration>
108  					</execution>
109  				</executions>
110  			</plugin>
111  			<plugin>
112  				<groupId>pl.project13.maven</groupId>
113  				<artifactId>git-commit-id-plugin</artifactId>
114  				<version>${git-commit-id-plugin.version}</version>
115  				<executions>
116  					<execution>
117  						<id>get-the-git-infos</id>
118  						<goals>
119  							<goal>revision</goal>
120  						</goals>
121  						<phase>initialize</phase>
122  					</execution>
123  				</executions>
124  				<configuration>
125  					<generateGitPropertiesFile>true</generateGitPropertiesFile>
126  					<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
127  					<includeOnlyProperties>
128  						<includeOnlyProperty>^git.commit.time$</includeOnlyProperty>
129  						<includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty>
130  					</includeOnlyProperties>
131  					<dateFormat>yyyyMMddHHmmss</dateFormat>
132  					<dateFormatTimeZone>UTC</dateFormatTimeZone>
133  					<gitDescribe>
134  						<dirty>-devel</dirty>
135  					</gitDescribe>
136  					<commitIdGenerationMode>full</commitIdGenerationMode>
137  					<injectAllReactorProjects>true</injectAllReactorProjects>
138  					<offline>true</offline>
139  					<skipPoms>false</skipPoms>
140  				</configuration>
141  			</plugin>
142  			<!-- inject correct url to swagger json file into swagger-ui -->
143  			<plugin>
144  				<groupId>com.google.code.maven-replacer-plugin</groupId>
145  				<artifactId>replacer</artifactId>
146  				<version>${replacer.version}</version>
147  				<executions>
148  					<execution>
149  						<id>replace-swagger-ui</id>
150  						<phase>generate-resources</phase>
151  						<goals>
152  							<goal>replace</goal>
153  						</goals>
154  						<inherited>false</inherited>
155  						<configuration>
156  							<file>${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/index.html</file>
157  							<replacements>
158  								<replacement>
159  									<token>Swagger UI</token>
160  									<value>Forknet API Documentation</value>
161  								</replacement>
162  							</replacements>
163  						</configuration>
164  					</execution>
165  					<execution>
166  						<id>replace-swagger-ui-json</id>
167  						<phase>generate-resources</phase>
168  						<goals>
169  							<goal>replace</goal>
170  						</goals>
171  						<inherited>false</inherited>
172  						<configuration>
173  							<file>${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/swagger-initializer.js</file>
174  							<replacements>
175  								<replacement>
176  									<token>https://petstore.swagger.io/v2/swagger.json</token>
177  									<value>/openapi.json</value>
178  								</replacement>
179  								<replacement>
180  									<token>deepLinking: true,</token>
181  									<value>
182  										deepLinking: true,
183  										tagsSorter: "alpha",
184  										operationsSorter: "alpha",
185  										validatorUrl: false,
186  									</value>
187  								</replacement>
188  							</replacements>
189  						</configuration>
190  					</execution>
191  					<execution>
192  						<id>replace-git-resources</id>
193  						<phase>generate-resources</phase>
194  						<goals>
195  							<goal>replace</goal>
196  						</goals>
197  						<inherited>false</inherited>
198  						<configuration>
199  							<file>${project.build.outputDirectory}/git.properties</file>
200  							<regex>true</regex>
201  							<regexFlags>
202  								<regexFlag>MULTILINE</regexFlag>
203  							</regexFlags>
204  							<replacements>
205  								<replacement>
206  									<token>^(#.*$[\n\r]*)</token>
207  									<value/>
208  								</replacement>
209  							</replacements>
210  						</configuration>
211  					</execution>
212  				</executions>
213  			</plugin>
214  			<!-- add swagger-ui as resource to output package -->
215  			<plugin>
216  				<artifactId>maven-resources-plugin</artifactId>
217  				<version>${maven-resources-plugin.version}</version>
218  				<configuration>
219  					<propertiesEncoding>ISO-8859-1</propertiesEncoding>
220  				</configuration>
221  				<executions>
222  					<execution>
223  						<id>copy-resources</id>
224  						<phase>generate-resources</phase>
225  						<goals>
226  							<goal>copy-resources</goal>
227  						</goals>
228  						<configuration>
229  							<outputDirectory>${project.build.directory}/classes/resources/swagger-ui</outputDirectory>
230  							<resources>
231  								<resource>
232  									<directory>${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}</directory>
233  								</resource>
234  							</resources>
235  						</configuration>
236  					</execution>
237  				</executions>
238  			</plugin>
239  			<!-- Generate package-info.java files for JAXB, to convert byte[] to/from 
240  				Base58 -->
241  			<plugin>
242  				<groupId>com.github.bohnman</groupId>
243  				<artifactId>package-info-maven-plugin</artifactId>
244  				<version>${maven-package-info-plugin.version}</version>
245  				<configuration>
246  					<packages>
247  						<package>
248  							<pattern>org.forknet.data.**</pattern>
249  							<template>${project.build.sourceDirectory}/org/forknet/data/package-info.java</template>
250  						</package>
251  						<package>
252  							<pattern>org.forknet.api.model**</pattern>
253  							<template>${project.build.sourceDirectory}/org/forknet/data/package-info.java</template>
254  						</package>
255  						<package>
256  							<pattern>org.forknet.api.model.**</pattern>
257  							<template>${project.build.sourceDirectory}/org/forknet/data/package-info.java</template>
258  						</package>
259  					</packages>
260  					<outputDirectory>${project.build.directory}/generated-sources/package-info</outputDirectory>
261  				</configuration>
262  				<executions>
263  					<execution>
264  						<goals>
265  							<goal>generate</goal>
266  						</goals>
267  					</execution>
268  				</executions>
269  			</plugin>
270  			<!-- Include generated package-info.java sources in build -->
271  			<plugin>
272  				<groupId>org.codehaus.mojo</groupId>
273  				<artifactId>build-helper-maven-plugin</artifactId>
274  				<version>${maven-build-helper-plugin.version}</version>
275  				<executions>
276  					<execution>
277  						<phase>generate-sources</phase>
278  						<goals>
279  							<goal>add-source</goal>
280  						</goals>
281  						<configuration>
282  							<sources>
283  								<source>${project.build.directory}/generated-sources/package-info</source>
284  							</sources>
285  						</configuration>
286  					</execution>
287  				</executions>
288  			</plugin>
289  			<plugin>
290  				<groupId>org.apache.maven.plugins</groupId>
291  				<artifactId>maven-jar-plugin</artifactId>
292  				<version>${maven-jar-plugin.version}</version>
293  				<executions>
294  					<execution>
295  						<configuration>
296  							<archive>
297  								<manifest>
298  									<addDefaultEntries>false</addDefaultEntries>
299  									<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
300  								</manifest>
301  								<manifestEntries>
302  									<Last-Commit-Id>${git.commit.id.full}</Last-Commit-Id>
303  									<Last-Commit-Time>${git.commit.time}</Last-Commit-Time>
304  									<Reproducible-Build>true</Reproducible-Build>
305  								</manifestEntries>
306  							</archive>
307  						</configuration>
308  					</execution>
309  				</executions>
310  			</plugin>
311  			<plugin>
312  				<groupId>org.apache.maven.plugins</groupId>
313  				<artifactId>maven-shade-plugin</artifactId>
314  				<version>${maven-shade-plugin.version}</version>
315  				<configuration>
316  					<createDependencyReducedPom>false</createDependencyReducedPom>
317  					<artifactSet>
318  						<excludes>
319  							<!-- Don't include original swagger-UI as we're including our own modified version -->
320  							<exclude>org.webjars:swagger-ui</exclude>
321  							<!-- Don't include JUnit as it's for testing only! -->
322  							<exclude>junit:junit</exclude>
323  						</excludes>
324  					</artifactSet>
325  					<filters>
326  						<filter>
327  							<artifact>*:*</artifact>
328  							<excludes>
329  								<exclude>META-INF/*.SF</exclude>
330  								<exclude>META-INF/*.DSA</exclude>
331  								<exclude>META-INF/*.RSA</exclude>
332  								<exclude>**/*.js.map</exclude>
333  							</excludes>
334  						</filter>
335  					</filters>
336  				</configuration>
337  				<executions>
338  					<execution>
339  						<phase>package</phase>
340  						<goals>
341  							<goal>shade</goal>
342  						</goals>
343  						<configuration>
344  							<transformers>
345  								<transformer
346  									implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
347  								<transformer
348  									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
349  									<mainClass>org.forknet.controller.Controller</mainClass>
350  									<manifestEntries>
351  										<Multi-Release>true</Multi-Release>
352  										<Class-Path>. ..</Class-Path>
353  									</manifestEntries>
354  								</transformer>
355  							</transformers>
356  						</configuration>
357  					</execution>
358  				</executions>
359  			</plugin>
360  			<plugin>
361  				<groupId>io.github.zlika</groupId>
362  				<artifactId>reproducible-build-maven-plugin</artifactId>
363  				<version>${maven-reproducible-build-plugin.version}</version>
364  				<executions>
365  					<execution>
366  						<phase>package</phase>
367  						<id>strip-jar</id>
368  						<goals>
369  							<goal>strip-jar</goal>
370  						</goals>
371  						<configuration>
372  							<zipDateTime>${git.commit.time}</zipDateTime>
373  						</configuration>
374  					</execution>
375  				</executions>
376  			</plugin>
377  			<plugin>
378  				<groupId>org.apache.maven.plugins</groupId>
379  				<artifactId>maven-surefire-plugin</artifactId>
380  				<version>${maven-surefire-plugin.version}</version>
381  				<configuration>
382  					<skipTests>${skipTests}</skipTests>
383  				</configuration>
384  			</plugin>
385  		</plugins>
386  		<pluginManagement>
387  			<plugins>
388  				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
389  				<plugin>
390  					<groupId>org.eclipse.m2e</groupId>
391  					<artifactId>lifecycle-mapping</artifactId>
392  					<version>${lifecycle-mapping.version}</version>
393  					<configuration>
394  						<lifecycleMappingMetadata>
395  							<pluginExecutions>
396  								<pluginExecution>
397  									<pluginExecutionFilter>
398  										<groupId>org.apache.maven.plugins</groupId>
399  										<artifactId>maven-dependency-plugin</artifactId>
400  										<version>${maven-dependency-plugin.version}</version>
401  										<goals>
402  											<goal>unpack</goal>
403  										</goals>
404  									</pluginExecutionFilter>
405  									<action>
406  										<execute/>
407  									</action>
408  								</pluginExecution>
409  								<pluginExecution>
410  									<pluginExecutionFilter>
411  										<groupId>com.google.code.maven-replacer-plugin</groupId>
412  										<artifactId>replacer</artifactId>
413  										<version>${replacer.version}</version>
414  										<goals>
415  											<goal>replace</goal>
416  										</goals>
417  									</pluginExecutionFilter>
418  									<action>
419  										<execute/>
420  									</action>
421  								</pluginExecution>
422  							</pluginExecutions>
423  						</lifecycleMappingMetadata>
424  					</configuration>
425  				</plugin>
426  				<plugin>
427  					<groupId>org.apache.maven.plugins</groupId>
428  					<artifactId>maven-surefire-plugin</artifactId>
429  					<version>${sure-fire-plugin.version}</version>
430  					<configuration>
431  						<argLine>-Dhsqldb.method_class_names="org.forknet.test.*" -ea</argLine>
432  					</configuration>
433  				</plugin>
434  			</plugins>
435  		</pluginManagement>
436  	</build>
437  	<repositories>
438  		<repository>
439  			<id>project.local</id>
440  			<name>project</name>
441  			<url>file:${project.basedir}/lib</url>
442  		</repository>
443  		<!-- jitpack for build-on-demand of altcoinj -->
444  		<repository>
445  			<id>jitpack.io</id>
446  			<url>https://jitpack.io</url>
447  		</repository>
448  	</repositories>
449  	<dependencies>
450  		<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/build-helper-maven-plugin -->
451  		<dependency>
452  			<groupId>org.codehaus.mojo</groupId>
453  			<artifactId>build-helper-maven-plugin</artifactId>
454  			<version>${maven-build-helper-plugin.version}</version>
455  			<scope>provided</scope>
456  			<!-- needed for build, not for runtime -->
457  		</dependency>
458  		<!-- https://mvnrepository.com/artifact/com.github.bohnman/package-info-maven-plugin -->
459  		<dependency>
460  			<groupId>com.github.bohnman</groupId>
461  			<artifactId>package-info-maven-plugin</artifactId>
462  			<version>${maven-package-info-plugin.version}</version>
463  			<scope>provided</scope>
464  			<!-- needed for build, not for runtime -->
465  		</dependency>
466  		<!-- HSQLDB for repository -->
467  		<dependency>
468  			<groupId>org.hsqldb</groupId>
469  			<artifactId>hsqldb</artifactId>
470  			<version>${hsqldb.version}</version>
471  		</dependency>
472  		<!-- CIYAM AT (automated transactions) -->
473  		<dependency>
474  			<groupId>org.ciyam</groupId>
475  			<artifactId>AT</artifactId>
476  			<version>${ciyam-at.version}</version>
477  		</dependency>
478  		<!-- UPnP support -->
479  		<dependency>
480  			<groupId>com.dosse</groupId>
481  			<artifactId>WaifUPnP</artifactId>
482  			<version>${upnp.version}</version>
483  		</dependency>
484  		<!-- Bitcoin support -->
485  		<dependency>
486  			<groupId>org.bitcoinj</groupId>
487  			<artifactId>bitcoinj-core</artifactId>
488  			<version>${bitcoinj.version}</version>
489  		</dependency>
490  		<!-- For Litecoin, etc. support, requires bitcoinj -->
491  		<dependency>
492  			<!-- TODO: Update altcoinj URL -->
493  			<groupId>com.github.qortal</groupId>
494  			<artifactId>altcoinj</artifactId>
495  			<version>${altcoinj.version}</version>
496  		</dependency>
497  		<!-- Utilities -->
498  		<dependency>
499  			<groupId>com.googlecode.json-simple</groupId>
500  			<artifactId>json-simple</artifactId>
501  			<version>${json-simple.version}</version>
502  		</dependency>
503  		<dependency>
504  			<groupId>org.json</groupId>
505  			<artifactId>json</artifactId>
506  			<version>${json.version}</version>
507  		</dependency>
508  		<dependency>
509  			<groupId>org.apache.commons</groupId>
510  			<artifactId>commons-text</artifactId>
511  			<version>${commons-text.version}</version>
512  		</dependency>
513  		<dependency>
514  			<groupId>commons-io</groupId>
515  			<artifactId>commons-io</artifactId>
516  			<version>${commons-io.version}</version>
517  		</dependency>
518  		<dependency>
519  			<groupId>org.apache.commons</groupId>
520  			<artifactId>commons-compress</artifactId>
521  			<version>${commons-compress.version}</version>
522  		</dependency>
523  		<dependency>
524  			<groupId>org.apache.commons</groupId>
525  			<artifactId>commons-lang3</artifactId>
526  			<version>${commons-lang3.version}</version>
527  		</dependency>
528  		<dependency>
529  			<groupId>org.tukaani</groupId>
530  			<artifactId>xz</artifactId>
531  			<version>${xz.version}</version>
532  		</dependency>
533  		<!--  For bitset/bitmap compression -->
534  		<dependency>
535  			<groupId>io.druid</groupId>
536  			<artifactId>extendedset</artifactId>
537  			<version>${extendedset.version}</version>
538  			<exclusions>
539  				<!-- exclude old versions of jackson-annotations / jackson-core -->
540  				<exclusion>
541  					<groupId>com.fasterxml.jackson.core</groupId>
542  					<artifactId>jackson-core</artifactId>
543  				</exclusion>
544  				<exclusion>
545  					<groupId>com.fasterxml.jackson.core</groupId>
546  					<artifactId>jackson-annotations</artifactId>
547  				</exclusion>
548  				<!-- exclude Netty, as included by io.druid.java.util -->
549  				<exclusion>
550  					<groupId>io.netty</groupId>
551  					<artifactId>netty</artifactId>
552  				</exclusion>
553  				<!-- exclude async-http-client, as included by io.druid.java.util -->
554  				<exclusion>
555  					<groupId>org.asynchttpclient</groupId>
556  					<artifactId>async-http-client</artifactId>
557  				</exclusion>
558  				<exclusion>
559  					<groupId>io.druid</groupId>
560  					<artifactId>java-util</artifactId>
561  				</exclusion>
562  			</exclusions>
563  		</dependency>
564  		<!-- For NTP -->
565  		<dependency>
566  			<groupId>commons-net</groupId>
567  			<artifactId>commons-net</artifactId>
568  			<version>${commons-net.version}</version>
569  		</dependency>
570  		<dependency>
571  			<groupId>com.google.guava</groupId>
572  			<artifactId>guava</artifactId>
573  			<version>${guava.version}</version>
574  		</dependency>
575  		<!-- Logging: log4j2 -->
576  		<dependency>
577  			<groupId>org.apache.logging.log4j</groupId>
578  			<artifactId>log4j-core</artifactId>
579  			<version>${log4j.version}</version>
580  		</dependency>
581  		<dependency>
582  			<groupId>org.apache.logging.log4j</groupId>
583  			<artifactId>log4j-api</artifactId>
584  			<version>${log4j.version}</version>
585  		</dependency>
586  		<!-- redirect slf4j to log4j2 -->
587  		<dependency>
588  			<groupId>org.apache.logging.log4j</groupId>
589  			<artifactId>log4j-slf4j-impl</artifactId>
590  			<version>${log4j.version}</version>
591  		</dependency>
592  		<!-- redirect java.utils.logging to log4j2 -->
593  		<dependency>
594  			<groupId>org.apache.logging.log4j</groupId>
595  			<artifactId>log4j-jul</artifactId>
596  			<version>${log4j.version}</version>
597  		</dependency>
598  		<!-- Logging: slf4j used by Jetty/Jersey -->
599  		<dependency>
600  			<groupId>org.slf4j</groupId>
601  			<artifactId>slf4j-api</artifactId>
602  			<version>${slf4j.version}</version>
603  		</dependency>
604  		<!-- Servlet related -->
605  		<dependency>
606  			<groupId>javax.servlet</groupId>
607  			<artifactId>javax.servlet-api</artifactId>
608  			<version>${javax.servlet-api.version}</version>
609  		</dependency>
610  		<dependency>
611  			<groupId>javax.mail</groupId>
612  			<artifactId>mail</artifactId>
613  			<version>${mail.version}</version>
614  		</dependency>
615  		<!-- Unicode homoglyph utilities -->
616  		<dependency>
617  			<groupId>net.codebox</groupId>
618  			<artifactId>homoglyph</artifactId>
619  			<version>${homoglyph.version}</version>
620  		</dependency>
621  		<!-- Unicode support -->
622  		<dependency>
623  			<groupId>com.ibm.icu</groupId>
624  			<artifactId>icu4j</artifactId>
625  			<version>${icu4j.version}</version>
626  		</dependency>
627  		<dependency>
628  			<groupId>com.ibm.icu</groupId>
629  			<artifactId>icu4j-charset</artifactId>
630  			<version>${icu4j.version}</version>
631  		</dependency>
632  		<!-- Jetty -->
633  		<dependency>
634  			<groupId>org.eclipse.jetty</groupId>
635  			<artifactId>jetty-server</artifactId>
636  			<version>${jetty.version}</version>
637  			<classifier>config</classifier>
638  		</dependency>
639  		<dependency>
640  			<groupId>org.eclipse.jetty</groupId>
641  			<artifactId>jetty-servlet</artifactId>
642  			<version>${jetty.version}</version>
643  			<type>jar</type>
644  		</dependency>
645  		<dependency>
646  			<groupId>org.eclipse.jetty</groupId>
647  			<artifactId>jetty-servlets</artifactId>
648  			<version>${jetty.version}</version>
649  		</dependency>
650  		<dependency>
651  			<groupId>org.eclipse.jetty</groupId>
652  			<artifactId>jetty-rewrite</artifactId>
653  			<version>${jetty.version}</version>
654  		</dependency>
655  		<dependency>
656  			<groupId>org.eclipse.jetty</groupId>
657  			<artifactId>jetty-client</artifactId>
658  			<version>${jetty.version}</version>
659  		</dependency>
660  		<!-- Websocket support -->
661  		<dependency>
662  			<groupId>org.eclipse.jetty.websocket</groupId>
663  			<artifactId>javax-websocket-server-impl</artifactId>
664  			<version>${jetty.version}</version>
665  		</dependency>
666  		<!-- Jersey -->
667  		<dependency>
668  			<groupId>org.glassfish.jersey.core</groupId>
669  			<artifactId>jersey-server</artifactId>
670  			<version>${jersey.version}</version>
671  		</dependency>
672  		<dependency>
673  			<groupId>org.glassfish.jersey.containers</groupId>
674  			<artifactId>jersey-container-servlet-core</artifactId>
675  			<version>${jersey.version}</version>
676  		</dependency>
677  		<dependency>
678  			<groupId>org.glassfish.jersey.inject</groupId>
679  			<artifactId>jersey-hk2</artifactId>
680  			<version>${jersey.version}</version>
681  			<exclusions>
682  				<exclusion>
683  					<!-- exclude javax.inject-1.jar because other jersey modules include javax.inject v2+ -->
684  					<groupId>javax.inject</groupId>
685  					<artifactId>javax.inject</artifactId>
686  				</exclusion>
687  			</exclusions>
688  		</dependency>
689  		<dependency>
690  			<groupId>org.glassfish.jersey.media</groupId>
691  			<artifactId>jersey-media-moxy</artifactId>
692  			<version>${jersey.version}</version>
693  		</dependency>
694  		<dependency>
695  			<groupId>org.glassfish.jersey.media</groupId>
696  			<artifactId>jersey-media-multipart</artifactId>
697  			<version>${jersey.version}</version>
698  		</dependency>
699  		<!-- Swagger OpenAPI implementation -->
700  		<dependency>
701  			<groupId>io.swagger.core.v3</groupId>
702  			<artifactId>swagger-jaxrs2</artifactId>
703  			<version>${swagger-api.version}</version>
704  		</dependency>
705  		<dependency>
706  			<groupId>io.swagger.core.v3</groupId>
707  			<artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
708  			<version>${swagger-api.version}</version>
709  			<exclusions>
710  				<exclusion>
711  					<!-- excluded because included in swagger-jaxrs2-servlet-initializer -->
712  					<groupId>io.swagger.core.v3</groupId>
713  					<artifactId>swagger-integration</artifactId>
714  				</exclusion>
715  			</exclusions>
716  		</dependency>
717  		<dependency>
718  			<groupId>org.webjars</groupId>
719  			<artifactId>swagger-ui</artifactId>
720  			<version>${swagger-ui.version}</version>
721  		</dependency>
722  		<!-- Testing -->
723  		<!-- disabled pending better Eclipse support
724  		<dependency>
725  			<groupId>org.junit.jupiter</groupId>
726  			<artifactId>junit-jupiter-engine</artifactId>
727  			<version>${junit-jupiter-engine.version}</version>
728  		</dependency>
729  		<dependency>
730  			<groupId>org.hamcrest</groupId>
731  			<artifactId>hamcrest-library</artifactId>
732  			<version>${hamcrest-library.version}</version>
733  		</dependency>
734  		-->
735  		<!-- BouncyCastle for crypto, including TLS secure networking -->
736  		<dependency>
737  			<groupId>org.bouncycastle</groupId>
738  			<artifactId>bcprov-jdk15on</artifactId>
739  			<version>${bouncycastle.version}</version>
740  		</dependency>
741  		<dependency>
742  			<groupId>org.bouncycastle</groupId>
743  			<artifactId>bctls-jdk15on</artifactId>
744  			<version>${bouncycastle.version}</version>
745  		</dependency>
746  		<dependency>
747  			<groupId>org.jsoup</groupId>
748  			<artifactId>jsoup</artifactId>
749  			<version>${jsoup.version}</version>
750  		</dependency>
751  		<dependency>
752  			<groupId>io.github.java-diff-utils</groupId>
753  			<artifactId>java-diff-utils</artifactId>
754  			<version>${java-diff-utils.version}</version>
755  		</dependency>
756  		<dependency>
757  			<groupId>io.grpc</groupId>
758  			<artifactId>grpc-netty</artifactId>
759  			<version>${grpc.version}</version>
760  		</dependency>
761  		<dependency>
762  			<groupId>io.grpc</groupId>
763  			<artifactId>grpc-protobuf</artifactId>
764  			<version>${grpc.version}</version>
765  		</dependency>
766  		<dependency>
767  			<groupId>io.grpc</groupId>
768  			<artifactId>grpc-stub</artifactId>
769  			<version>${grpc.version}</version>
770  		</dependency>
771  		<dependency>
772  			<groupId>com.google.protobuf</groupId>
773  			<artifactId>protobuf-java</artifactId>
774  			<version>${protobuf.version}</version>
775  		</dependency>
776  		<dependency>
777  			<groupId>com.j256.simplemagic</groupId>
778  			<artifactId>simplemagic</artifactId>
779  			<version>${simplemagic.version}</version>
780  		</dependency>
781  		<!-- JAXB runtime for WADL support -->
782  		<dependency>
783  			<groupId>org.glassfish.jaxb</groupId>
784  			<artifactId>jaxb-runtime</artifactId>
785  			<version>${jaxb-runtime.version}</version>
786  		</dependency>
787  	</dependencies>
788  </project>