Without forceCreation, maven-jar-plugin kept the previous shaded ts3-client.jar when the module's classes were unchanged, and the shade then used it as input: the stale ts3j classes inside it won over the freshly installed ts3j, so ts3j fixes never reached the built client without a clean. Also updates ts3j for the empty server-group parsing fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
157 lines
7.3 KiB
XML
157 lines
7.3 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>
|
|
|
|
<parent>
|
|
<groupId>com.ts3client</groupId>
|
|
<artifactId>ts3-client-parent</artifactId>
|
|
<version>0.1.0</version>
|
|
</parent>
|
|
|
|
<artifactId>ts3-client-swing</artifactId>
|
|
<name>TS3J Client Swing Frontend</name>
|
|
<description>Swing desktop UI</description>
|
|
|
|
<properties>
|
|
<exec.mainClass>com.ts3client.Main</exec.mainClass>
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.ts3client</groupId>
|
|
<artifactId>ts3-client-core</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.ts3client</groupId>
|
|
<artifactId>ts3-client-desktop</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.github.manevolent</groupId>
|
|
<artifactId>ts3j</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.github.weisj</groupId>
|
|
<artifactId>jsvg</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.formdev</groupId>
|
|
<artifactId>flatlaf</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter</artifactId>
|
|
<version>5.13.4</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<finalName>ts3-client</finalName>
|
|
<plugins>
|
|
<!--
|
|
The shade plugin replaces ts3-client.jar with the shaded jar. Without
|
|
forceCreation, a build where this module's classes did not change keeps
|
|
that shaded jar as the input to the next shade, and the stale copies of
|
|
the dependencies inside it (ts3j in particular) win over the fresh ones.
|
|
-->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-jar-plugin</artifactId>
|
|
<configuration>
|
|
<forceCreation>true</forceCreation>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-shade-plugin</artifactId>
|
|
<version>3.6.2</version>
|
|
<executions>
|
|
<execution>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>shade</goal>
|
|
</goals>
|
|
<configuration>
|
|
<!--
|
|
Tree-shake the dependencies: only a fraction of Bouncy Castle
|
|
(the lightweight EC/AES-EAX API) is actually reachable.
|
|
-->
|
|
<minimizeJar>true</minimizeJar>
|
|
<filters>
|
|
<!-- Our own modules are entry points; keep them whole. -->
|
|
<filter>
|
|
<artifact>com.ts3client:*</artifact>
|
|
<includes>
|
|
<include>**</include>
|
|
</includes>
|
|
</filter>
|
|
<filter>
|
|
<artifact>com.github.manevolent:ts3j</artifact>
|
|
<includes>
|
|
<include>**</include>
|
|
</includes>
|
|
</filter>
|
|
<!-- JSVG resolves its node types by service loader/reflection,
|
|
which minimizeJar cannot follow. -->
|
|
<filter>
|
|
<artifact>com.github.weisj:jsvg</artifact>
|
|
<includes>
|
|
<include>**</include>
|
|
</includes>
|
|
</filter>
|
|
<!-- FlatLaf instantiates its UI delegates by name and reads its
|
|
themes from .properties resources; neither is reachable
|
|
statically, so minimizeJar must not touch it. -->
|
|
<filter>
|
|
<artifact>com.formdev:flatlaf</artifact>
|
|
<includes>
|
|
<include>**</include>
|
|
</includes>
|
|
</filter>
|
|
<filter>
|
|
<artifact>*:*</artifact>
|
|
<excludes>
|
|
<!--
|
|
The shaded jar is not a multi-release jar, so the
|
|
versioned copies (all Bouncy Castle's) are never loaded,
|
|
and minimizeJar does not tree-shake them either.
|
|
-->
|
|
<exclude>META-INF/versions/**</exclude>
|
|
<exclude>META-INF/*.SF</exclude>
|
|
<exclude>META-INF/*.DSA</exclude>
|
|
<exclude>META-INF/*.RSA</exclude>
|
|
<exclude>module-info.class</exclude>
|
|
</excludes>
|
|
</filter>
|
|
</filters>
|
|
<transformers>
|
|
<transformer
|
|
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
|
<mainClass>com.ts3client.Main</mainClass>
|
|
<manifestEntries>
|
|
<Enable-Native-Access>ALL-UNNAMED</Enable-Native-Access>
|
|
</manifestEntries>
|
|
</transformer>
|
|
<!-- Merge overlapping META-INF/services entries (e.g. java.security.Provider)
|
|
instead of letting one dependency's file overwrite another's. -->
|
|
<transformer
|
|
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
|
|
</transformers>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>exec-maven-plugin</artifactId>
|
|
<version>3.1.0</version>
|
|
<configuration>
|
|
<mainClass>com.ts3client.Main</mainClass>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|