Split Getdown into multiple (Maven) modules.

- core: the main Getdown logic code
- tools: code to create digest.txt & patch files
- launcher: the standalone launcher/updater app
- ant: the Ant task for creating digest.txt files

This paves the way for a proper Jigsaw-ification of the Getdown code.

I may further factor code out of getdown-launcher and into getdown-core to
enable the use-case where an app embeds Getdown completely and does not use the
launcher app/UI. That will also make it easier to create a JavaFX UI and retire
the old Swing UI.

This also moves the obsolete applet code into a separate applet module, which
is merely a temporary holding area. It will be deleted in the next commit.
This commit is contained in:
Michael Bayne
2018-09-04 09:11:29 -07:00
parent 8ff9bf4d68
commit 4c383f99c7
63 changed files with 386 additions and 264 deletions
+28
View File
@@ -0,0 +1,28 @@
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.threerings</groupId>
<artifactId>getdown</artifactId>
<version>1.7.2-SNAPSHOT</version>
</parent>
<artifactId>getdown-ant</artifactId>
<packaging>jar</packaging>
<name>Getdown Ant Task</name>
<description>An Ant task for building Getdown app distributions</description>
<dependencies>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>getdown-tools</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
+51
View File
@@ -0,0 +1,51 @@
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.threerings</groupId>
<artifactId>getdown</artifactId>
<version>1.7.2-SNAPSHOT</version>
</parent>
<artifactId>getdown-app</artifactId>
<packaging>jar</packaging>
<name>Getdown Applet</name>
<description>The Getdown installer applet (obsolete)</description>
<dependencies>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>getdown-launcher</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>java</groupId>
<artifactId>plugin</artifactId>
<version>1.5</version>
<scope>system</scope>
<systemPath>${plugin.jar.path}</systemPath>
</dependency>
</dependencies>
<profiles>
<!-- finagling to deal with plugin.jar not being bundled with OpenJDK -->
<profile>
<id>standard-jdk</id>
<activation>
<file><exists>${java.home}/lib/plugin.jar</exists></file>
</activation>
<properties>
<plugin.jar.path>${java.home}/lib/plugin.jar</plugin.jar.path>
</properties>
</profile>
<profile>
<id>icedtea-web</id>
<activation>
<file><exists>/usr/share/icedtea-web/plugin.jar</exists></file>
</activation>
<properties>
<plugin.jar.path>/usr/share/icedtea-web/plugin.jar</plugin.jar.path>
</properties>
</profile>
</profiles>
</project>
+44
View File
@@ -0,0 +1,44 @@
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.threerings</groupId>
<artifactId>getdown</artifactId>
<version>1.7.2-SNAPSHOT</version>
</parent>
<artifactId>getdown-core</artifactId>
<packaging>jar</packaging>
<name>Getdown Core</name>
<description>Core Getdown functionality</description>
<dependencies>
<dependency>
<groupId>com.samskivert</groupId>
<artifactId>samskivert</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource> <!-- include the LICENSE file in the jar -->
<directory>..</directory>
<includes><include>LICENSE</include></includes>
</resource>
</resources>
</build>
</project>
@@ -36,7 +36,6 @@ import com.samskivert.util.StringUtil;
import com.threerings.getdown.classpath.ClassPaths; import com.threerings.getdown.classpath.ClassPaths;
import com.threerings.getdown.classpath.ClassPath; import com.threerings.getdown.classpath.ClassPath;
import com.threerings.getdown.launcher.RotatingBackgrounds;
import com.threerings.getdown.util.*; import com.threerings.getdown.util.*;
// avoid ambiguity with java.util.Base64 which we can't use as it's 1.8+ // avoid ambiguity with java.util.Base64 which we can't use as it's 1.8+
import com.threerings.getdown.util.Base64; import com.threerings.getdown.util.Base64;
@@ -100,10 +99,10 @@ public class Application
/** A background color, just in case. */ /** A background color, just in case. */
public Color background = Color.white; public Color background = Color.white;
/** Background image specifiers for {@link RotatingBackgrounds}. */ /** Background image specifiers for `RotatingBackgrounds`. */
public String[] rotatingBackgrounds; public String[] rotatingBackgrounds;
/** The error background image for {@link RotatingBackgrounds}. */ /** The error background image for `RotatingBackgrounds`. */
public String errorBackground; public String errorBackground;
/** The paths (relative to the appdir) of images for the window icon. */ /** The paths (relative to the appdir) of images for the window icon. */
@@ -9,7 +9,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import com.threerings.getdown.util.VersionUtil; import com.threerings.getdown.util.VersionUtil;
import com.threerings.getdown.launcher.Getdown;
/** /**
* This class encapsulates all system properties that are read and processed by Getdown. Don't * This class encapsulates all system properties that are read and processed by Getdown. Don't
@@ -59,7 +58,7 @@ public class SysProps
} }
/** If true, Getdown does not automatically install updates after downloading them. It waits /** If true, Getdown does not automatically install updates after downloading them. It waits
* for the application to call {@link Getdown#install}. * for the application to call `Getdown.install`.
* Usage: {@code -Dno_install}. */ * Usage: {@code -Dno_install}. */
public static boolean noInstall () { public static boolean noInstall () {
return System.getProperty("no_install") != null; return System.getProperty("no_install") != null;
+180
View File
@@ -0,0 +1,180 @@
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.threerings</groupId>
<artifactId>getdown</artifactId>
<version>1.7.2-SNAPSHOT</version>
</parent>
<artifactId>getdown-launcher</artifactId>
<packaging>jar</packaging>
<name>Getdown Launcher</name>
<description>The Getdown app updater/launcher</description>
<repositories>
<repository>
<id>lib-repo</id>
<url>file://${basedir}/../lib</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>getdown-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>getdown-tools</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>jregistrykey</groupId>
<artifactId>jregistrykey</artifactId>
<version>1.0</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.0.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<configuration>
<proguardVersion>6.0.3</proguardVersion>
<outputDirectory>${project.build.directory}</outputDirectory>
<outjar>${project.build.finalName}.jar</outjar>
<injar>${project.build.finalName}.jar</injar>
<assembly>
<inclusions>
<inclusion>
<groupId>com.threerings</groupId>
<artifactId>getdown-core</artifactId>
</inclusion>
<inclusion>
<groupId>com.threerings</groupId>
<artifactId>getdown-tools</artifactId>
</inclusion>
<inclusion>
<groupId>com.samskivert</groupId>
<artifactId>samskivert</artifactId>
<filter>
!**/*.java,
!**/swing/RuntimeAdjust*,
!**/swing/util/ButtonUtil*,
!**/util/CalendarUtil*,
!**/util/Calendars*,
!**/util/Log4JLogger*,
!**/util/PrefsConfig*,
!**/util/SignalUtil*,
com/samskivert/Log.class,
**/samskivert/io/**,
**/samskivert/swing/**,
**/samskivert/text/**,
**/samskivert/util/**
</filter>
</inclusion>
<inclusion>
<groupId>jregistrykey</groupId>
<artifactId>jregistrykey</artifactId>
</inclusion>
</inclusions>
</assembly>
<obfuscate>true</obfuscate>
<options>
<option>-keep public class com.threerings.getdown.** { *; }</option>
<option>-keep public class ca.beq.util.win32.registry.** { *; }</option>
<option>-keepattributes Exceptions, InnerClasses, Signature</option>
</options>
<libs>
<lib>${rt.jar.path}</lib>
</libs>
<addMavenDescriptor>false</addMavenDescriptor>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.threerings.getdown.launcher.GetdownApp</mainClass>
</manifest>
<manifestEntries>
<Permissions>all-permissions</Permissions>
<Application-Name>Getdown</Application-Name>
<Codebase>*</Codebase>
<Application-Library-Allowable-Codebase>*</Application-Library-Allowable-Codebase>
<Caller-Allowable-Codebase>*</Caller-Allowable-Codebase>
<Trusted-Library>true</Trusted-Library>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!-- finagling to find rt.jar -->
<profile>
<id>non-mac-jre</id>
<activation>
<file><exists>${java.home}/../lib/rt.jar</exists></file>
</activation>
<properties>
<rt.jar.path>${java.home}/../lib/rt.jar</rt.jar.path>
</properties>
</profile>
<profile>
<id>non-mac-jdk</id>
<activation>
<file><exists>${java.home}/lib/rt.jar</exists></file>
</activation>
<properties>
<rt.jar.path>${java.home}/lib/rt.jar</rt.jar.path>
</properties>
</profile>
<profile>
<id>java-9-jdk</id>
<activation>
<file><exists>${java.home}/jmods/java.base.jmod</exists></file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<configuration>
<libs>
<lib>${java.home}/jmods/java.base.jmod</lib>
<lib>${java.home}/jmods/java.desktop.jmod</lib>
<lib>${java.home}/jmods/java.logging.jmod</lib>
<lib>${java.home}/jmods/jdk.jsobject.jmod</lib>
</libs>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
+51 -259
View File
@@ -9,7 +9,7 @@
<groupId>com.threerings</groupId> <groupId>com.threerings</groupId>
<artifactId>getdown</artifactId> <artifactId>getdown</artifactId>
<packaging>jar</packaging> <packaging>pom</packaging>
<version>1.7.2-SNAPSHOT</version> <version>1.7.2-SNAPSHOT</version>
<name>getdown</name> <name>getdown</name>
@@ -41,187 +41,16 @@
<url>https://github.com/threerings/getdown</url> <url>https://github.com/threerings/getdown</url>
</scm> </scm>
<repositories> <modules>
<repository> <module>core</module>
<id>lib-repo</id> <module>tools</module>
<url>file://${basedir}/lib</url> <module>launcher</module>
</repository> <!-- deprecated: <module>applet</module>-->
</repositories> <module>ant</module>
</modules>
<dependencies>
<dependency>
<groupId>com.samskivert</groupId>
<artifactId>samskivert</artifactId>
<version>1.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>jregistrykey</groupId>
<artifactId>jregistrykey</artifactId>
<version>1.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>java</groupId>
<artifactId>plugin</artifactId>
<version>1.5</version>
<scope>system</scope>
<systemPath>${plugin.jar.path}</systemPath>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
</dependencies>
<build> <build>
<resources>
<resource> <!-- reiterate standard dir since we're customizing, yay! -->
<directory>src/main/resources</directory>
</resource>
<resource> <!-- include the LICENSE file in the jar -->
<directory>.</directory>
<includes><include>LICENSE</include></includes>
</resource>
</resources>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-Xlint</arg>
<arg>-Xlint:-serial</arg>
<arg>-Xlint:-path</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<quiet>true</quiet>
<show>public</show>
<additionalparam>-Xdoclint:all -Xdoclint:-missing</additionalparam>
</configuration>
</plugin>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.0.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<configuration>
<proguardVersion>6.0.3</proguardVersion>
<outputDirectory>${project.build.directory}</outputDirectory>
<outjar>${project.build.finalName}.jar</outjar>
<injar>${project.build.finalName}.jar</injar>
<assembly>
<inclusions>
<inclusion>
<groupId>com.samskivert</groupId>
<artifactId>samskivert</artifactId>
<filter>
!**/*.java,
!**/swing/RuntimeAdjust*,
!**/swing/util/ButtonUtil*,
!**/util/CalendarUtil*,
!**/util/Calendars*,
!**/util/Log4JLogger*,
!**/util/PrefsConfig*,
!**/util/SignalUtil*,
com/samskivert/Log.class,
**/samskivert/io/**,
**/samskivert/swing/**,
**/samskivert/text/**,
**/samskivert/util/**
</filter>
</inclusion>
<inclusion>
<groupId>jregistrykey</groupId>
<artifactId>jregistrykey</artifactId>
</inclusion>
</inclusions>
</assembly>
<obfuscate>true</obfuscate>
<options>
<option>-keep public class com.threerings.getdown.** { *; }</option>
<option>-keep public class ca.beq.util.win32.registry.** { *; }</option>
<option>-keepattributes Exceptions, InnerClasses, Signature</option>
</options>
<libs>
<lib>${rt.jar.path}</lib>
</libs>
<addMavenDescriptor>false</addMavenDescriptor>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.threerings.getdown.launcher.GetdownApp</mainClass>
</manifest>
<manifestEntries>
<Permissions>all-permissions</Permissions>
<Application-Name>Getdown</Application-Name>
<Codebase>*</Codebase>
<Application-Library-Allowable-Codebase>*</Application-Library-Allowable-Codebase>
<Caller-Allowable-Codebase>*</Caller-Allowable-Codebase>
<Trusted-Library>true</Trusted-Library>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.sonatype.plugins</groupId> <groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId> <artifactId>nexus-staging-maven-plugin</artifactId>
@@ -235,6 +64,49 @@
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
<!-- Common plugin configuration for all children -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-Xlint</arg>
<arg>-Xlint:-serial</arg>
<arg>-Xlint:-path</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<quiet>true</quiet>
<show>public</show>
<additionalparam>-Xdoclint:all -Xdoclint:-missing</additionalparam>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build> </build>
<profiles> <profiles>
@@ -306,85 +178,5 @@
</plugins> </plugins>
</build> </build>
</profile> </profile>
<!-- finagling to find rt.jar -->
<profile>
<id>non-mac-jre</id>
<activation>
<file><exists>${java.home}/../lib/rt.jar</exists></file>
</activation>
<properties>
<rt.jar.path>${java.home}/../lib/rt.jar</rt.jar.path>
</properties>
</profile>
<profile>
<id>non-mac-jdk</id>
<activation>
<file><exists>${java.home}/lib/rt.jar</exists></file>
</activation>
<properties>
<rt.jar.path>${java.home}/lib/rt.jar</rt.jar.path>
</properties>
</profile>
<profile>
<id>java-9-jdk</id>
<activation>
<file><exists>${java.home}/jmods/java.base.jmod</exists></file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<configuration>
<libs>
<lib>${java.home}/jmods/java.base.jmod</lib>
<lib>${java.home}/jmods/java.desktop.jmod</lib>
<lib>${java.home}/jmods/java.logging.jmod</lib>
<lib>${java.home}/jmods/jdk.jsobject.jmod</lib>
</libs>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- finagling to deal with plugin.jar not being bundled with OpenJDK -->
<profile>
<id>standard-jdk</id>
<activation>
<file><exists>${java.home}/lib/plugin.jar</exists></file>
</activation>
<properties>
<plugin.jar.path>${java.home}/lib/plugin.jar</plugin.jar.path>
</properties>
</profile>
<profile>
<id>icedtea-web</id>
<activation>
<file><exists>/usr/share/icedtea-web/plugin.jar</exists></file>
</activation>
<properties>
<plugin.jar.path>/usr/share/icedtea-web/plugin.jar</plugin.jar.path>
</properties>
</profile>
<!-- For deploying to a local place -->
<profile>
<id>deploy-local</id>
<distributionManagement>
<repository>
<id>deploy-local-dir</id>
<name>Local Maven repository</name>
<url>file://${deploy.local.dir}</url>
</repository>
<snapshotRepository>
<id>deploy-local-dir</id>
<name>Local Maven repository</name>
<url>file://${deploy.local.dir}</url>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles> </profiles>
</project> </project>
+29
View File
@@ -0,0 +1,29 @@
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.threerings</groupId>
<artifactId>getdown</artifactId>
<version>1.7.2-SNAPSHOT</version>
</parent>
<artifactId>getdown-tools</artifactId>
<packaging>jar</packaging>
<name>Getdown App</name>
<description>Tools for creating digests and patch files</description>
<dependencies>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>getdown-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>