Files
ts3java/ts3-client/swing/pom.xml
ericek111 1fddae3f0b Always rebuild the swing jar before shading it
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>
2026-09-23 19:30:48 +00:00

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>