pom.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>
<groupId>io.github.mtrevisan</groupId>
<artifactId>HunLinter</artifactId>
<version>2.2.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>HunLinter</name>
<description>Application for the linting of hunspell files</description>
<url>https://github.com/mtrevisan/HunLinter</url>
<developers>
<developer>
<name>Mauro Trevisan</name>
<url>https://github.com/mtrevisan/</url>
<roles>
<role>Developer</role>
</roles>
</developer>
</developers>
<scm>
<connection>scm:git:git@github.com:mtrevisan/HunLinter.git</connection>
<developerConnection>scm:git:git@github.com:mtrevisan/HunLinter.git</developerConnection>
<url>https://github.com/mtrevisan/HunLinter</url>
</scm>
<issueManagement>
<url>https://github.com/mtrevisan/HunLinter/issues</url>
<system>GitHub Issues</system>
</issueManagement>
<properties>
<main.class>io.github.mtrevisan.hunlinter.MainFrame</main.class>
<app.name>HunLinter</app.name>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<javadoc.html.version>-html5</javadoc.html.version>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
<build.timestamp>${maven.build.timestamp}</build.timestamp>
<!-- This property is used to specify the modules included in the (custom) JVM image. -->
<jvm.modules>java.desktop,java.naming,jdk.localedata,jdk.unsupported</jvm.modules>
<jvm.locales>en</jvm.locales>
<jvm.temporaryFolder>out</jvm.temporaryFolder>
<jvm.outputFolder>jvm-image</jvm.outputFolder>
<!-- This ID is used by the Windows installer system to know that an installer is intended to replace/upgrade an earlier version.
Grab a unique UUID via https://www.uuidgenerator.net -->
<windows.upgrade.uuid>523ce3a3-9838-484b-8219-a3832bde60f9</windows.upgrade.uuid>
<app.vendor>Mauro Trevisan</app.vendor>
<app.menu>Mauro Trevisan's Tools</app.menu>
<app.copyright>(c) 2019-2024 Mauro Trevisan</app.copyright>
<!-- Profiles & Build -->
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-gpg-plugin -->
<maven-gpg-plugin.version>3.2.4</maven-gpg-plugin.version>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-deploy-plugin -->
<maven-deploy-plugin.version>3.1.2</maven-deploy-plugin.version>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-source-plugin -->
<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-javadoc-plugin -->
<maven-javadoc-plugin.version>3.7.0</maven-javadoc-plugin.version>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
<!-- https://code.google.com/archive/p/maven-replacer-plugin/ -->
<maven-replacer-plugin.version>1.5.3</maven-replacer-plugin.version>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-shade-plugin -->
<!-- <maven-shade-plugin.version>3.6.0</maven-shade-plugin.version>-->
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin -->
<maven-assembly-plugin.version>3.7.1</maven-assembly-plugin.version>
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/exec-maven-plugin -->
<exec-maven-plugin.version>3.3.0</exec-maven-plugin.version>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-install-plugin -->
<maven-install-plugin.version>3.1.2</maven-install-plugin.version>
<!-- Apache -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text -->
<apache.commons-text.version>1.12.0</apache.commons-text.version>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<apache.commons-io.version>2.16.1</apache.commons-io.version>
<!-- jFreeChart -->
<!-- https://mvnrepository.com/artifact/org.jfree/jfreechart -->
<jfree.jfreechart.version>1.5.4</jfree.jfreechart.version>
<!-- https://mvnrepository.com/artifact/com.github.vsonnier/hppcrt -->
<github.vsonnier.hppcrt.version>0.7.5</github.vsonnier.hppcrt.version>
<!-- JSON -->
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<googlecode.json-simple.version>1.1.1</googlecode.json-simple.version>
<!-- Logging -->
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<logback.logback-classic.version>1.5.6</logback.logback-classic.version>
<!-- JUnit -->
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
<junit.junit-jupiter-engine.version>5.10.2</junit.junit-jupiter-engine.version>
</properties>
<profiles>
<profile>
<id>stage</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- mvn clean deploy -U -Dmaven.test.skip=true-->
<id>release</id>
<properties>
<gpg.executable>gpg</gpg.executable>
</properties>
<build>
<plugins>
<!-- Signing JAR Files -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Deploy -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- JavaDoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<additionalOptions>${javadoc.html.version}</additionalOptions>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
<detectJavaApiLink>false</detectJavaApiLink>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
<!-- Compiler -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>${maven-replacer-plugin.version}</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>${project.build.directory}/packaging-launcher/launcher.bat</file>
<replacements>
<replacement>
<token>\\\\</token>
<value>\\</value>
</replacement>
</replacements>
</configuration>
</plugin>
<!-- Shade -->
<!-- NOTE: shade 3.2.4 does not support java 17 yet! -->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-shade-plugin</artifactId>-->
<!-- <version>${maven-shade-plugin.version}</version>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <!– Run shade goal on package phase –>-->
<!-- <phase>package</phase>-->
<!-- <goals>-->
<!-- <goal>shade</goal>-->
<!-- </goals>-->
<!-- <configuration>-->
<!-- <minimizeJar>true</minimizeJar>-->
<!-- <shadedArtifactAttached>true</shadedArtifactAttached>-->
<!-- <shadedClassifierName>shaded</shadedClassifierName>-->
<!-- <outputDirectory>${project.build.directory}/${jvm.temporaryFolder}</outputDirectory>-->
<!-- <filters>-->
<!-- <!– FIXME: strengthen the inclusions –>-->
<!-- <!– ClassNotFoundException: ch.qos.logback.classic.boolex.OnMarkerEvaluator–>-->
<!-- <filter>-->
<!-- <artifact>ch.qos.logback:logback-classic</artifact>-->
<!-- <includes>-->
<!-- <include>**</include>-->
<!-- </includes>-->
<!-- </filter>-->
<!-- <filter>-->
<!-- <artifact>*:*</artifact>-->
<!-- <excludes>-->
<!-- <exclude>LICENSE.txt</exclude>-->
<!-- <exclude>META-INF/LICENSE</exclude>-->
<!-- <exclude>META-INF/LICENSE.txt</exclude>-->
<!-- <exclude>META-INF/NOTICE</exclude>-->
<!-- <exclude>META-INF/NOTICE.txt</exclude>-->
<!-- </excludes>-->
<!-- </filter>-->
<!-- </filters>-->
<!-- <transformers>-->
<!-- <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">-->
<!-- <mainClass>${main.class}</mainClass>-->
<!-- <manifestEntries>-->
<!-- <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>-->
<!-- <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>-->
<!-- <Built-By>${app.vendor}</Built-By>-->
<!-- <Build-Jdk>${java.version} (${java.vendor} ${java.vm.version})</Build-Jdk>-->
<!-- <Build-OS>${os.name} ${os.arch} ${os.version}</Build-OS>-->
<!-- </manifestEntries>-->
<!-- </transformer>-->
<!-- </transformers>-->
<!-- </configuration>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<!-- Assembly / Make fat jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifestEntries>
<Built-By>${app.vendor}</Built-By>
</manifestEntries>
<manifest>
<mainClass>${main.class}</mainClass>
</manifest>
</archive>
<outputDirectory>${project.build.directory}/${jvm.temporaryFolder}</outputDirectory>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
<!-- Jlink -->
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-antrun-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!-- trick used to prevent errors with the removal of output folder if it doesn't exist yet -->
<mkdir dir="${project.build.directory}/${jvm.outputFolder}" />
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec-maven-plugin.version}</version>
<executions>
<!-- clean jvm image folder -->
<execution>
<id>clean-jvm-folder</id>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.basedir}/tools/FastCopy/FastCopy.exe</executable>
<arguments>
<argument>/no_ui</argument>
<argument>/log=FALSE</argument>
<argument>/estimate=FALSE</argument>
<argument>/cmd=delete</argument>
<argument>"${project.build.directory}/${jvm.outputFolder}"</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>jlink</id>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<workingDirectory>${project.build.directory}</workingDirectory>
<executable>${java.home}/bin/jlink.exe</executable>
<arguments>
<argument>--strip-debug</argument>
<argument>--compress</argument>
<argument>2</argument>
<argument>--no-header-files</argument>
<argument>--no-man-pages</argument>
<argument>--include-locales=${jvm.locales}</argument>
<argument>--module-path</argument>
<argument>./${jvm.temporaryFolder}</argument>
<argument>--add-modules</argument>
<argument>${jvm.modules}</argument>
<argument>--output</argument>
<argument>${jvm.outputFolder}</argument>
</arguments>
</configuration>
</execution>
<!-- Launcher -->
<execution>
<id>prepare-bat2exe</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.basedir}/tools/FastCopy/FastCopy.exe</executable>
<arguments>
<argument>/no_ui</argument>
<argument>/log=FALSE</argument>
<argument>/estimate=FALSE</argument>
<argument>/cmd=force_copy</argument>
<argument>"${project.basedir}/tools/BAT2EXE/RunNHide.exe"</argument>
<argument>/to="${project.build.directory}/packaging-launcher"</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>bat2exe</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.basedir}/tools/BAT2EXE/makesfx 5.6.exe</executable>
<arguments>
<argument>-ic</argument>
<argument>-mf</argument>
<argument>-fc</argument>
<argument>-ws</argument>
<argument>-dn</argument>
<argument>-i</argument>
<argument>-s</argument>
<argument>-un</argument>
<argument>-oo</argument>
<argument>"${project.build.directory}/packaging-launcher/"</argument>
<argument>"${project.build.directory}/${jvm.outputFolder}/${app.name}.exe"</argument>
<argument>"${project.basedir}/app-icon.ico"</argument>
<argument>"${project.build.directory}/packaging-launcher/RunNHide.exe"</argument>
<argument>"launcher.bat"</argument>
</arguments>
</configuration>
</execution>
<!-- copy remaining resources into the jvm image folder -->
<execution>
<id>include-last-resources-jar</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.basedir}/tools/FastCopy/FastCopy.exe</executable>
<arguments>
<argument>/no_ui</argument>
<argument>/log=FALSE</argument>
<argument>/estimate=FALSE</argument>
<argument>/cmd=move</argument>
<argument>"${project.build.directory}/${jvm.temporaryFolder}"</argument>
<argument>/to="${project.build.directory}/${jvm.outputFolder}/app"</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>include-last-resources-aids</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.basedir}/tools/FastCopy/FastCopy.exe</executable>
<arguments>
<argument>/no_ui</argument>
<argument>/log=FALSE</argument>
<argument>/estimate=FALSE</argument>
<argument>/cmd=force_copy</argument>
<argument>"${project.basedir}/aids"</argument>
<argument>/to="${project.build.directory}/${jvm.outputFolder}/app/aids"</argument>
</arguments>
</configuration>
</execution>
<!-- run inno setup to create installer -->
<execution>
<id>installer</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<workingDirectory>${project.build.directory}</workingDirectory>
<executable>"C:\Program Files (x86)\Inno Setup 6\iscc.exe"</executable>
<arguments>
<argument>/Q</argument>
<argument>${project.build.directory}/packaging/installer.iss</argument>
</arguments>
</configuration>
</execution>
</executions>
<configuration>
<systemProperties>
<systemProperty>
<key>java.home</key>
<!--suppress UnresolvedMavenProperty -->
<value>${JAVA_HOME}</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
<!-- Install -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
<configuration>
<!-- This is an app, so we don't want to install it in the local Maven repository -->
<skip>true</skip>
</configuration>
</plugin>
</plugins>
<resources>
<!-- include non-java src files in the same place in the output jar -->
<resource>
<directory>${project.build.sourceDirectory}</directory>
<includes>
<include>io/github/mtrevisan/hunlinter/languages/*/rules.properties</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}/src/packaging</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/packaging</targetPath>
</resource>
<resource>
<directory>${project.basedir}/src/packaging-launcher</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/packaging-launcher</targetPath>
</resource>
<!-- Add the default resource path back in - by overriding above it disables the default -->
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<includes>
<include>*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
<dependencies>
<!-- Apache -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>${apache.commons-text.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${apache.commons-io.version}</version>
</dependency>
<!-- jFreeChart -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>${jfree.jfreechart.version}</version>
</dependency>
<dependency>
<groupId>com.github.vsonnier</groupId>
<artifactId>hppcrt</artifactId>
<version>${github.vsonnier.hppcrt.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.koloboke</groupId>-->
<!-- <artifactId>koloboke-api-jdk8</artifactId>-->
<!-- <version>1.0.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.koloboke</groupId>-->
<!-- <artifactId>koloboke-impl-jdk8</artifactId>-->
<!-- <version>1.0.0</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<!-- JSON -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>${googlecode.json-simple.version}</version>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- Logging -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.logback-classic.version}</version>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.junit-jupiter-engine.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>manual</distribution>
</license>
</licenses>
</project>