Files
2026-06-17 14:00:51 +02:00

1894 lines
84 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<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>
<name>JMRI</name>
<groupId>org.jmri</groupId>
<artifactId>jmri</artifactId>
<version>5.15.8-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<release.build_user>${user.name}</release.build_user>
<release.build_date>${maven.build.timestamp}</release.build_date>
<!-- it would be better to get current year from machine clock -->
<jmri.copyright.year>${project.inceptionYear}-${current.year}</jmri.copyright.year>
<!-- dependency versions (its easier to include version in dependency
but if multiple dependencies are linked, use a property for single
dependency source) -->
<cucumber.version>4.3.1</cucumber.version>
<jetty.version>9.4.28.v20200408</jetty.version>
<!-- this is a custom version, see lib/README.md -->
<jemmy.version>RELEASE125</jemmy.version>
<slf4j.version>2.0.17</slf4j.version>
<log4j.version>2.25.3</log4j.version>
<jackson-core.version>2.13.4</jackson-core.version>
<jackson-databind.version>2.13.4.2</jackson-databind.version>
<jackson-annotations.version>2.13.4</jackson-annotations.version>
<jogamp.version>2.5.0</jogamp.version>
<openlcb.version>0.8.6</openlcb.version>
<netbeans.version>RELEASE150</netbeans.version>
<spotbugs.version>4.9.8.2</spotbugs.version>
<jacoco.version>0.8.14</jacoco.version>
<jacoco.reportDir>${basedir}/target/</jacoco.reportDir>
<!-- test environment -->
<jmri.path.program>${basedir}</jmri.path.program>
<jmri.prefsdir>${basedir}/temp</jmri.prefsdir>
<jmri.shutdownmanager>jmri.util.MockShutDownManager</jmri.shutdownmanager>
<!-- don't load JInput during CI tests -->
<jinput.useDefaultPlugin>false</jinput.useDefaultPlugin>
<ant.version>1.10.14</ant.version>
<junit5.version>5.13.4</junit5.version>
<junit.platform.version>1.13.4</junit.platform.version>
<ant.jvm.args></ant.jvm.args>
<argLine>-Xmx1536m -Duser.language=en -Duser.region=US -Dnashorn.args=--no-deprecation-warning --add-exports java.desktop/sun.awt=ALL-UNNAMED -XX:+EnableDynamicAgentLoading</argLine>
<!-- define argLines to allow running surefire:test -->
<surefire.argLine></surefire.argLine>
<failsafe.argLine></failsafe.argLine>
<surefire.version>3.5.4</surefire.version>
<failsafe.version>3.5.4</failsafe.version>
<jqassistant.version>1.6.0</jqassistant.version>
<checkstyle.config.location>${basedir}/checkstyle.xml</checkstyle.config.location>
</properties>
<scm>
<connection>scm:git:https://github.com/JMRI/JMRI.git</connection>
<url>https://github.com/JMRI/JMRI.git</url>
</scm>
<inceptionYear>1997</inceptionYear>
<issueManagement>
<system>github</system>
<url>https://github.com/JMRI/JMRI/issues</url>
</issueManagement>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<organization>
<name>The JMRI Project</name>
<url>http://jmri.org</url>
</organization>
<profiles>
<profile>
<id>travis-headless</id>
<properties>
<spotbugs.skip>true</spotbugs.skip>
<java.awt.headless>true</java.awt.headless>
</properties>
</profile>
<profile>
<id>travis-coverage</id>
<properties>
<spotbugs.skip>true</spotbugs.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>4.3.0</version>
<configuration>
<sourceDirectories>
<!-- Additional source directories -->
<File>target/generated-sources/javacc</File>
<File>target/generated-sources/jjtree</File>
</sourceDirectories>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>travis-spotbugs</id>
<build>
<plugins>
<!-- prevent surefire (maven default test harness) from running tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs.version}</version>
<configuration>
<plugins>
<plugin>
<groupId>jp.skypencil.findbugs.slf4j</groupId>
<artifactId>bug-pattern</artifactId>
<version>1.5.0</version>
</plugin>
</plugins>
</configuration>
<!-- configured to fail on Medium priority bugs during test phase (needs to be done two places) -->
<executions>
<execution>
<id>failing-on-high</id>
<phase>test</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<excludeFilterFile>.spotbugs-check.xml</excludeFilterFile>
<effort>Max</effort>
<threshold>Low</threshold>
<maxHeap>1536</maxHeap>
<timeout>1200000</timeout><!-- 20 minutes -->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<!-- with exception of violationSeverity should match non-profiled checkstyle config and ant checkstyle config -->
<failOnViolation>true</failOnViolation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<sourceDirectories>
<sourceDirectory>${basedir}</sourceDirectory>
</sourceDirectories>
<includes>java/**/*</includes>
<excludes>**/*.jpg,**/*.PNG,**/*.jar,**/*.dll,**/*.dylib,**/*.so,**/*.exe,
**/*.zip,**/*.icns,**/*.bat,**/*.ttf,**/*.vsd,**/*.wav,**/*.spj,
**/*.pdf,.metadata/.plugins/org.eclipse.core.resources/**,
help/en/JavaHelpSearch/**,help/fr/JavaHelpSearch/**,
web/app/node_modules/**,.git/**,target/**</excludes>
<!-- only show errors, not warnings or infos -->
<violationSeverity>error</violationSeverity>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>test-warnings-check</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<compilerId>eclipse</compilerId>
<source>11</source>
<target>11</target>
<compilerArgs>
<properties>${basedir}/java/ecj.warning.options-ci</properties>
<arg>-sourcepath</arg>
<arg>${basedir}/java/src:${basedir}/target/generated-sources</arg>
<arg>-proc:full</arg>
</compilerArgs>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-eclipse</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
<version>3.19.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>travis-scanhelp</id>
<build>
<plugins>
<!-- prevent surefire (maven default test harness) from running tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>scripts/tidy-check.sh</executable>
<arguments>
<argument>help/en/*/*</argument>
<argument>help/fr/*/*</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!--
The profile disables if tests are run in debug mode, so Jacoco instrumentation
does not break debugging features.
-->
<id>jacoco-coverage-unit</id>
<activation>
<property>
<name>!maven.surefire.debug</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!--
The profile disables if tests are run in debug mode, so Jacoco instrumentation
does not break debugging features.
-->
<id>jacoco-coverage-integration</id>
<activation>
<property>
<name>!maven.surefire.debug</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent-integration</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!--
This profile is a workaround for NetBeans broken (?) support for multiple
maven goals on action where Compile-on-Save is enabled. Instead of running a
goal sequence, the IDE sets a property that activates this profile.
-->
<id>jacoco-coverage-ide-report</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>netbeans.jacoco.report</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>ide-report</id>
<goals>
<goal>report</goal>
</goals>
<!-- Bind to the test phase. The Jacoco plugin is
configured AFTER surefire plugin in this POM, so starting with Maven 3.0.3
the Jacoco plugin goals will only run after surefire testing completes
-->
<phase>test</phase>
<configuration>
<skip>${skipTests}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<sourceDirectory>${basedir}/java/src</sourceDirectory>
<testSourceDirectory>${basedir}/java/test</testSourceDirectory>
<resources>
<resource>
<directory>${basedir}/java/src</directory>
<filtering>false</filtering>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
<exclude>**/junit-platform.properties</exclude><!-- Prevent Warning 2 JUnit properties found -->
</excludes>
</resource>
<resource>
<directory>${basedir}/java/template</directory>
<filtering>true</filtering>
<includes>
<include>jmri/Version.properties</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>${basedir}/java/test</directory>
<filtering>false</filtering>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<filters>
<filter>${basedir}/release.properties</filter>
<filter>${project.build.directory}/generated/build-metadata/build.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.4.10</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.2.0</version><!--$NO-MVN-MAN-VER$-->
<!-- above line-end comment silences warning in Eclipse -->
<!--
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<configuration>
<target>
<ant antfile="${basedir}/build.xml">
<target name="ci-test"/>
</ant>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
-->
<configuration>
<target>
<ant antfile="${basedir}/build.xml">
<target name="${anttarget}"/>
</ant>
</target>
</configuration>
<dependencies>
<!-- use the version of ant we specify -->
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>${ant.version}</version>
</dependency>
<!-- junit support is optional in ant maven packaging -->
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-junit</artifactId>
<version>${ant.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-junitlauncher</artifactId>
<version>${ant.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgs>
<arg>-proc:full</arg>
</compilerArgs>
</configuration>
<executions>
<execution>
<id>default-testCompile</id>
<configuration>
<compilerArgs combine.children="append">
<arg>-Alog4j.graalvm.groupId=${project.groupId}</arg>
<arg>-Alog4j.graalvm.artifactId=${project.artifactId}</arg>
</compilerArgs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javacc-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<sourceDirectory>${basedir}/java/src</sourceDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>jjtree-javacc</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>net.java.dev.javacc</groupId>
<artifactId>javacc</artifactId>
<version>7.0.3</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs.version}</version>
<!-- configured to fail on medium priority bugs (needs to be done two places)-->
<configuration>
<plugins>
<plugin>
<groupId>jp.skypencil.findbugs.slf4j</groupId>
<artifactId>bug-pattern</artifactId>
<version>1.5.0</version>
</plugin>
</plugins>
<excludeFilterFile>.spotbugs-check.xml</excludeFilterFile>
<effort>Max</effort>
<threshold>Low</threshold>
<maxHeap>1536</maxHeap>
<timeout>1200000</timeout><!-- 20 minutes -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>${basedir}</additionalClasspathElement>
</additionalClasspathElements>
<excludes>
<!-- ignore until #3492 is resolved -->
<exclude>%regex[jmri.jmrix.loconet.locormi.LnMessage[Client|Server]Test]</exclude>
<!-- ignore to avoid duplicate test runs -->
<exclude>apps.tests.AllTest</exclude>
<exclude>jmri.HeadLessTest</exclude>
<!-- ignore since the test is not intended to be normally used -->
<exclude>jmri.util.FailTest</exclude>
<!-- exclude the archunit tests from automatic execution -->
<exclude>jmri.ArchitectureTest</exclude>
<exclude>jmri.TestArchitectureTest</exclude>
<!-- exclude the line endings tests from automatic execution -->
<exclude>jmri.util.FileLineEndingsCheck</exclude>
<!-- ignore since base classes for other tests -->
<exclude>jmri.jmrit.operations.OperationsTestCase</exclude>
<exclude>jmri.jmrit.operations.OperationsSwingTestCase</exclude>
<!-- exclude since intentionally waits forever -->
<exclude>jmri.util.TestWaitsForever</exclude>
</excludes>
<systemPropertyVariables>
<jmri.path.program>${basedir}</jmri.path.program>
<jmri.prefsdir>${basedir}/temp</jmri.prefsdir>
<jmri.shutdownmanager>jmri.util.MockShutDownManager</jmri.shutdownmanager>
<jinput.useDefaultPlugin>false</jinput.useDefaultPlugin><!-- don't load JInput during CI tests -->
</systemPropertyVariables>
<trimStackTrace>false</trimStackTrace>
<workingDirectory>${basedir}</workingDirectory>
<!-- -ea or -da in the next line to control Java asserts -->
<argLine>@{argLine} @{surefire.argLine} -Djava.security.policy=${basedir}/lib/security.policy</argLine>
<useSystemClassLoader>true</useSystemClassLoader>
<useManifestOnlyJar>false</useManifestOnlyJar>
<!-- forkCount causes tests to run in forked JVMs. The following the number with C says to fork the number multiplied by the number of cores available. -->
<forkCount>1</forkCount>
<!-- setting re-use forks to false causes a timeout on CI servers, please do not uncomment.
<reuseForks>false</reuseForks>
-->
</configuration>
<!-- From Surefire 3.0+ ( due to junit-vintage-engine ), this forces the JU Platform runner. -->
<!-- Maven Test runner auto-detects JUnit4 Test Runner instead of JUnit Platform Runner. -->
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit-platform</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<argLine>@{argLine} @{failsafe.argLine} -Djava.security.policy=${basedir}/lib/security.policy</argLine>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<!-- we don't need these at this time
<execution>
<id>validate</id>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
-->
<execution>
<id>generate</id>
<phase>generate-resources</phase>
<goals>
<goal>create-metadata</goal>
</goals>
</execution>
</executions>
<configuration>
<shortRevisionLength>7</shortRevisionLength>
<revisionOnScmFailure>UNKNOWN</revisionOnScmFailure>
<timestampFormat>yyyyMMddHHmm</timestampFormat>
<timezone>UTC</timezone>
<!-- want false to generate Version.properties -->
<!-- want true to generate distibutions -->
<doCheck>false</doCheck>
<!-- want false to generate Version.properties -->
<!-- want true to generate distibutions -->
<doUpdate>false</doUpdate>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<phase>validate</phase>
<configuration>
<name>current.year</name>
<pattern>yyyy</pattern>
<locale>en,US</locale>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/java/acceptancetest/step_definitions</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<!-- differs from ant-produced Javadocs by including JMRI version -->
<maxmemory>512m</maxmemory>
<overview>${basedir}/java/src/jmri/overview.html</overview>
<sourcepath>${basedir}/java/src:${project.build.directory}/generated-sources/javacc:${project.build.directory}/generated-sources/jjtree</sourcepath>
<!-- do not document the generated parser packages -->
<excludePackageNames>*.simpleserver.parser:*.srcp.parser</excludePackageNames>
<show>package</show>
<!-- change from default 100 warnings; keep number synced with ant javadoc target -->
<additionalJOption>-breakiterator -Xmaxwarns 100</additionalJOption><!-- 100 is default, here so we can easily change it -->
<!-- remove ",-missing" to get warnings about missing Javadoc tags -->
<doclint>all,-missing</doclint>
<author>true</author><!-- default -->
<use>true</use><!-- default -->
<failOnError>true</failOnError><!-- default -->
<failOnWarnings>true</failOnWarnings>
<quiet>true</quiet>
<splitindex>true</splitindex>
<additionalJOption>-J-Dhttp.agent=maven-javadoc-plugin-${project.name}</additionalJOption>
<tags>
<tag>
<!-- disable output of custom @navassoc tag - used for UML image generation -->
<name>navassoc</name>
<!-- The value X makes Javadoc ignoring the tag -->
<placement>X</placement>
</tag>
</tags>
<groups>
<group>
<title>Core</title>
<packages>jmri</packages>
</group>
<group>
<title>Cross-system Tools</title>
<packages>jmri.jmrit*</packages>
</group>
<group>
<title>Applications</title>
<packages>apps:apps*</packages>
</group>
<group>
<title>Implementations</title>
<packages>jmri.implementation*:jmri.managers*:jmri.progdebugger:jmri.layout</packages>
</group>
<group>
<title>Utilities</title>
<packages>jmri.util*</packages>
</group>
<group>
<title>XML persistance</title>
<packages>jmri.configurexml*</packages>
</group>
<group>
<title>Web Services</title>
<packages>jmri.web*:jmri.server*</packages>
</group>
<group>
<title>Interface Server Support</title>
<packages>jmri.jmris*</packages>
</group>
<!-- Layout Connections last because so large -->
<group>
<title>Layout Connections</title>
<packages>jmri.jmrix*</packages>
</group>
</groups>
<bottom><![CDATA[<i>Copyright &copy; ${project.inceptionYear}&#x2013;{currentYear} JMRI Community.
<br>JMRI&reg;, DecoderPro&reg;, PanelPro, SignalPro, SoundPro, DispatcherPro, TrainPro and associated logos are our trademarks.</i>
<br><a href="https://www.jmri.org/Copyright.html">Additional information on copyright, trademarks and licenses is linked here.</a>
]]>
</bottom>
<links>
<link>http://docs.oracle.com/en/java/javase/11/docs/api/</link>
<!-- Link below removed 2024/09/15 as failing Java21 static JavaDoc build, see https://github.com/JMRI/JMRI/pull/13454 -->
<!-- <link>http://java.sun.com/products/javacomm/reference/api/</link> -->
<link>http://www.jdom.org/docs/apidocs/</link>
<link>https://commons.apache.org/proper/commons-csv/apidocs/</link>
<link>http://logging.apache.org/log4j/1.2/apidocs/</link>
<link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
<link>https://fazecast.github.io/jSerialComm/javadoc</link>
<!-- The following are commented out because they throw warnings with Java 17 -->
<!-- yet we want real warnings to fail this check in CI. -->
<!-- By commenting them out, we lose links to their Javadoc from ours. But since -->
<!-- our web production Javadocs are made with Ant, not Maven, this is not a problem -->
<!-- <link>https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/${jackson-databind.version}/</link> -->
<!-- <link>https://static.javadoc.io/org.openlcb/openlcb/${openlcb.version}/</link> -->
<!-- <link>https://javadoc.io/static/com.github.spotbugs/spotbugs-annotations/${spotbugs.version}/</link> -->
<!-- <link>https://javadoc.io/doc/com.google.code.findbugs/jsr305/3.0.1/</link> -->
<!-- <link>https://static.javadoc.io/com.github.purejavacomm/purejavacomm/1.0.1.RELEASE/</link> -->
<!-- <link>https://static.javadoc.io/com.alexandriasoftware.swing/jsplitbutton/1.3.1/</link> -->
<!-- <link>https://jogamp.org/deployment/jogamp-next/javadoc/joal/javadoc/</link> -->
</links>
</configuration>
</plugin>
<plugin>
<!-- Warning: do not put this plugin's configuration before surefire plugin one. The sequence
in which the surefire and jacoco goals run is important -->
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<!-- Do not bind any goals, let a profile to do it conditionally -->
<configuration>
<append>true</append>
<destFile>${jacoco.reportDir}/jacoco-unit.exec</destFile>
<propertyName>surefire.argLine</propertyName>
</configuration>
</execution>
<execution>
<id>prepare-agent-integration</id>
<!-- Do not bind any goals, let a profile to do it conditionally -->
<configuration>
<append>true</append>
<destFile>${jacoco.reportDir}/jacoco-it.exec</destFile>
<propertyName>failsafe.argLine</propertyName>
</configuration>
</execution>
<execution>
<id>merge</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>${jacoco.reportDir}</directory>
<includes>
<File>**/*.exec</File>
</includes>
</fileSet>
</fileSets>
</configuration>
</execution>
<execution>
<id>default-cli</id>
<configuration>
<fileSets>
<fileSet>
<directory>${jacoco.reportDir}</directory>
<includes>
<File>**/*.exec</File>
</includes>
</fileSet>
</fileSets>
</configuration>
</execution>
<execution>
<!-- Do a merge after unit tests complete, to cover the case that only goals up to 'test' phase
are executed. The post-integration-test will merge in integration tests' coverage -->
<id>post-test-merge</id>
<!-- Must explicitly bind to the phase. Since this plugin is configured AFTER surefire,
it will bind later that surefire:test into the (same) test phase -->
<phase>test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>${jacoco.reportDir}</directory>
<includes>
<File>**/*.exec</File>
</includes>
</fileSet>
</fileSets>
</configuration>
</execution>
<execution>
<id>report</id>
<goals>
<goal>report</goal>
</goals>
<configuration>
<skip>${skipTests}</skip>
</configuration>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<skip>${skipTests}</skip>
<excludes>
<File>**/*Test*.class</File>
<!-- Exclude testing infrastructure classes -->
<File>**/*Scaffold.class"</File>
<File>**/*JUnit*.class</File>
<File>**/*Demo.class</File>
<File>**/*Mock*.class</File>
<File>jmri/jmrit/symbolicprog/tabbedframe/CheckProgrammerNames.class</File>
<File>jmri/jmrix/openlcb/SampleFactory.class</File>
<File>jmri/util/swing/SamplePane.class</File>
<File>jmri/jmrit/display/EditorFrameOperator.class</File>
<File>jmri/util/web/BrowserFactory.class</File>
<!-- pure interfaces and classes of constants -->
<File>jmri/AddressedProgrammerManager.class</File>
<File>jmri/jmris/simpleserver/parser/JmriServerParserTreeConstants.class</File>
<File>jmri/jmris/srcp/parser/SRCPParserTreeConstants.class</File>
<File>jmri/jmrit/audio/AudioSource.class</File>
<File>jmri/jmrix/srcp/parser/SRCPClientParserTreeConstants.class</File>
<!-- exclude the archunit check -->
<File>jmri.ArchitectureCheck.class</File>
<!-- deprecated classes -->
<File>jmri/jmrix/loconet/AbstractAlmImplementation.class</File>
<!-- Exclude files meant to check SpotBugs. -->
<File>apps/FindBugsCheck.class</File>
<File>apps/CheckerFrameworkCheck.class</File>
</excludes>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.50</minimum>
</limit>
<limit>
<counter>CLASS</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
</limits>
</rule>
<!-- fails if package only contains interfaces
<rule>
<element>PACKAGE</element>
<limits>
<limit>
<counter>CLASS</counter>
<value>COVEREDCOUNT</value>
<minimum>1</minimum>
</limit>
</limits>
</rule>
-->
<rule>
<element>SOURCEFILE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.00001</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- don't run jqassistant (yet) on every build.
<plugin>
<groupId>com.buschmais.jqassistant</groupId>
<artifactId>jqassistant-maven-plugin</artifactId>
</plugin>
-->
<plugin>
<groupId>org.sonatype.ossindex.maven</groupId>
<artifactId>ossindex-maven-plugin</artifactId>
<version>3.0.4</version>
<configuration>
<fail>true</fail>
<!-- List packages with vulnerabilities to ignore. -->
<!-- Include an issue in GitHub for each ignored package -->
<!-- documenting why the vulnerability is ignored. -->
<excludeCoordinates>
</excludeCoordinates>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M2</version>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.3.9,)</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<!--this is to check we do not have the xml-apis included since JRE provides it already-->
<exclude>xml-apis:xml-apis</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<!-- with exception of violationSeverity should match travis-spotbugs profile checkstyle config and ant checkstyle config -->
<failOnViolation>true</failOnViolation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<sourceDirectories>
<sourceDirectory>${basedir}</sourceDirectory>
</sourceDirectories>
<includes>**/*</includes>
<excludes>**/*.jpg,**/*.PNG,**/*.jar,**/*.dll,**/*.dylib,**/*.so,**/*.exe,
**/*.zip,**/*.icns,**/*.bat,**/*.ttf,**/*.vsd,**/*.wav,**/*.spj,
**/*.pdf,.metadata/.plugins/org.eclipse.core.resources/**,
help/en/JavaHelpSearch/**,help/fr/JavaHelpSearch/**,
web/app/node_modules/**,.git/**,target/**</excludes>
<!-- show errors, warnings, and infos -->
<violationSeverity>info</violationSeverity>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<filesets>
<!-- cleanup behind Eclipse -->
<fileset>
<directory>.apt_generated</directory>
<followSymlinks>false</followSymlinks>
<useDefaultExcludes>true</useDefaultExcludes>
</fileset>
<fileset>
<directory>.apt_generated_tests</directory>
<followSymlinks>false</followSymlinks>
<useDefaultExcludes>true</useDefaultExcludes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>local.properties</file>
</files>
<quiet>true</quiet>
</configuration>
</execution>
</executions>
</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.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<versionRange>[1.4,)</versionRange>
<goals>
<goal>create-metadata</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javacc-maven-plugin</artifactId>
<versionRange>[2.6,)</versionRange>
<goals>
<goal>jjtree-javacc</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>false</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>com.buschmais.jqassistant</groupId>
<artifactId>jqassistant-maven-plugin</artifactId>
<version>${jqassistant.version}</version>
<executions>
<execution>
<goals>
<goal>scan</goal>
<goal>analyze</goal>
</goals>
<configuration>
<warnOnSeverity>MINOR</warnOnSeverity>
<failOnSeverity>MAJOR</failOnSeverity>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.0</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.29</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<showSuccess>false</showSuccess>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.7</version>
<reportSets>
<reportSet>
<reports>
<report>dependency-updates-report</report>
<report>plugin-updates-report</report>
<report>property-updates-report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<reportSets>
<reportSet>
<reports>
<!-- select non-aggregate reports -->
<!-- <report>report</report>
<report>report-integration</report> -->
<report>report-aggregate</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>com.buschmais.jqassistant</groupId>
<artifactId>jqassistant-maven-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<report>report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</reporting>
<dependencies>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
<version>2.0.6.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- When this is removed, also remove surefire-junit-platform override. -->
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-engine</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite-api</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit-junit5</artifactId>
<version>1.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.27.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>6.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.help</groupId>
<artifactId>javahelp</artifactId>
<version>2.0.05</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.vecmath</groupId>
<artifactId>vecmath</artifactId>
<version>1.5.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId> <!-- Commons Logging to SLF4J Bridge -->
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId> <!-- Log4Jv1 to SLF4J Bridge ( CATS ) -->
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<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-slf4j2-impl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-core.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-annotations.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-api</artifactId>
<version>${jetty.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-servlet</artifactId>
<version>${jetty.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
<version>${jetty.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.4</version>
</dependency>
<!--
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
-->
<dependency>
<groupId>org.jmdns</groupId>
<artifactId>jmdns</artifactId>
<version>3.5.5</version>
</dependency>
<!--
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-debug-all</artifactId>
<version>5.0.2</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all-main</artifactId>
<version>${jogamp.version}</version>
</dependency>
-->
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt-main</artifactId>
<version>${jogamp.version}</version>
</dependency>
<dependency>
<groupId>org.jogamp.joal</groupId>
<artifactId>joal-main</artifactId>
<version>${jogamp.version}</version>
</dependency>
<dependency>
<groupId>org.jdesktop</groupId>
<artifactId>beansbinding</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<!-- jsoup HTML parser library @ https://jsoup.org/ -->
<!-- used in jmri.util.GenerateSearchIndexTest -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-core</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-plugin-raspberrypi</artifactId>
<version>2.8.0</version>
<!-- loaded at runtime via ServiceLoader on Raspberry Pi hardware -->
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-plugin-linuxfs</artifactId>
<version>2.8.0</version>
<!-- loaded at runtime via ServiceLoader on Raspberry Pi hardware -->
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-plugin-gpiod</artifactId>
<version>2.8.0</version>
<!-- GpioD plugin: uses Linux /dev/gpiochip* character-device interface
(preferred on kernel 5.10+); loaded at runtime via ServiceLoader -->
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-library-gpiod</artifactId>
<version>2.8.0</version>
<!-- transitive runtime dependency of pi4j-plugin-gpiod; JNI wrapper for
the native libgpiod C library (sudo apt install libgpiod2) -->
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.sf.bluecove</groupId>
<artifactId>bluecove</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>5.13.0</version>
</dependency>
<!-- the following dependency required for Eclipse IDE -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.13.0</version>
</dependency>
<dependency>
<groupId>net.java.jinput</groupId>
<artifactId>jinput</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>org.openlcb</groupId>
<artifactId>openlcb</artifactId>
<version>${openlcb.version}</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
<!-- The next two lines force use of the local lib/openlcb.jar file. -->
<!-- This is needed when we're using a custom openlcb.jar file -->
<!-- not yet available on a maven repository. -->
<!--
<scope>system</scope>
<systemPath>${project.basedir}/lib/openlcb.jar</systemPath>
-->
</dependency>
<dependency>
<groupId>com.github.weisj</groupId>
<artifactId>darklaf-core</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.usb4java</groupId>
<artifactId>usb4java-javax</artifactId>
<version>1.3.0</version>
</dependency>
<!-- SpotBugs annotations -->
<dependency>
<groupId>net.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
<version>1.0</version>
</dependency>
<!-- SpotBugs annotations (SpotBugs does not include JSR 305) -->
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.1</version>
</dependency>
<!-- SpotBugs annotations -->
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>4.9.8</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.2</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.digi.xbee</groupId>
<artifactId>xbee-java-library</artifactId>
<version>1.3.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>com.digi</groupId>
<artifactId>android-sdk</artifactId>
</exclusion>
<exclusion>
<groupId>com.digi</groupId>
<artifactId>android-sdk-addon</artifactId>
</exclusion>
<exclusion>
<groupId>org.rxtx</groupId>
<artifactId>rxtx</artifactId>
</exclusion>
<exclusion>
<groupId>org.rxtx</groupId>
<artifactId>rxtx-native</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.opensmarthouse</groupId>
<artifactId>purejavacomm</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.fazecast</groupId>
<artifactId>jSerialComm</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.21.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.18.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
<version>1.18.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.objenesis/objenesis -->
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>3.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.netbeans.external</groupId>
<artifactId>jemmy-2.3.1.1</artifactId>
<version>${jemmy.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.netbeans.api</groupId>
<artifactId>org-openide-util-lookup</artifactId>
<version>${netbeans.version}</version>
</dependency>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.5.0</version>
</dependency>
<dependency>
<groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>com.alexandriasoftware.swing</groupId>
<artifactId>jsplitbutton</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.alexandriasoftware.swing</groupId>
<artifactId>jinputvalidator</artifactId>
<version>0.8.0</version>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.9.0</version>
</dependency>
<dependency>
<groupId>org.apiguardian</groupId>
<artifactId>apiguardian-api</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.github.sarxos</groupId>
<artifactId>webcam-capture</artifactId>
<version>0.3.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/batik-transcoder -->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId>
<version>1.17</version>
<exclusions>
<exclusion>
<artifactId>fop</artifactId>
<groupId>fop</groupId>
</exclusion>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
<exclusion> <!-- Use jcl-over-slf4j JCL > SLF4J Bridge instead -->
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- //BiDiB client library -->
<!-- jbidibc 2.0.40 -->
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-core</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-serial</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-simulation</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-jserialcomm</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-messages</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-netbidib</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>jbidibc-net-serial-over-tcp</artifactId>
<version>2.0.40</version>
</dependency>
<!-- BiDiB Wizard Simulation 2.0.44 -->
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>bidibwizard-common</artifactId>
<version>2.0.44</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>bidibwizard-model</artifactId>
<version>2.0.44</version>
</dependency>
<dependency>
<groupId>org.bidib.jbidib</groupId>
<artifactId>bidibwizard-simulation</artifactId>
<version>2.0.44</version>
</dependency>
<!-- dependencies from jbidibc and bidibwizard -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>org.bushe</groupId>
<artifactId>eventbus</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version> <!-- should be 2.3.1 for compatibility -->
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.2</version> <!-- should be 2.3.2 for compatibility -->
</dependency>
<dependency>
<groupId>com.jgoodies</groupId>
<artifactId>jgoodies-binding</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.jgoodies</groupId>
<artifactId>jgoodies-common</artifactId>
<version>1.8.1</version>
</dependency>
<!-- //BiDiB -->
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.10.2</version>
</dependency>
</dependencies>
<repositories>
<!-- Always try maven central first -->
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
<!-- Automatic GitHub->Maven Dependency repository -->
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>mvnrepository.com</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>jogamp-remote</id>
<name>jogamp test mirror</name>
<url>https://jogamp.org/deployment/maven/</url>
<layout>default</layout>
</repository>
<!--
Local "repository" hosting libraries not available through maven.org
-->
<repository>
<id>lib</id>
<name>lib</name>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>file://${project.basedir}/lib</url>
</repository>
</repositories>
</project>