Skip to content

Commit

Permalink
Issue #7: Binary distrib to contain shaded executable uber jar
Browse files Browse the repository at this point in the history
  • Loading branch information
spannm committed Apr 14, 2024
1 parent 4e2a8da commit 7c5c65a
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 82 deletions.
81 changes: 63 additions & 18 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
<developerId>spannm</developerId>

<ucanaccess.console.main>net.ucanaccess.console.Main</ucanaccess.console.main>
<uber.jar.classifier.name>uber</uber.jar.classifier.name>

<dep.jackcess.artifactId>jackcess</dep.jackcess.artifactId>
<dep.jackcess.version>5.0.0-SNAPSHOT</dep.jackcess.version>
Expand Down Expand Up @@ -280,35 +281,78 @@
</pluginManagement>

<plugins>

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<!-- Create a shaded jar in system temp for inclusion in the distrib-zip assembly -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<!-- mvn org.apache.maven.plugins:maven-assembly-plugin:single@distrib-zip-assembly -->
<id>distrib-zip-assembly</id>
<configuration>
<descriptors>
<descriptor>src/main/assembly/distrib-zip-assembly.xml</descriptor>
</descriptors>
<appendAssemblyId>true</appendAssemblyId>
</configuration>
<id>uber-jar</id>
<goals>
<goal>single</goal>
<goal>shade</goal>
</goals>
<phase>package</phase>
<configuration>
<outputDirectory>${java.io.tmpdir}</outputDirectory>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>${uber.jar.classifier.name}</shadedClassifierName>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>false</minimizeJar>

<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>${ucanaccess.console.main}</mainClass>
</transformer>
</transformers>

<!-- exclude selected Jars to reduce size of the Uber jar -->
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<!-- special handling for the META-INF directory -->
<exclude>META-INF/maven/**</exclude>
</excludes>
</filter>
</filters>

<artifactSet>
<excludes>
<exclude>org.apache.poi:poi</exclude>
<exclude>commons-codec:commons-codec</exclude>
<exclude>org.apache.commons:commons-collections4</exclude>
<exclude>org.apache.commons:commons-math3</exclude>
<exclude>com.zaxxer</exclude>
</excludes>
</artifactSet>

<relocations>
<relocation>
<pattern>${project.groupId}</pattern>
<shadedPattern>shaded.${project.groupId}</shadedPattern>
</relocation>
<relocation>
<pattern>org.hsqldb</pattern>
<shadedPattern>shaded.org.hsqldb</shadedPattern>
</relocation>
</relocations>

</configuration>
</execution>
</executions>
</plugin>

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<!-- mvn org.apache.maven.plugins:maven-assembly-plugin:single@fat-jar-assembly -->
<id>fat-jar-assembly</id>
<!-- mvn org.apache.maven.plugins:maven-assembly-plugin:single@distrib-zip-assembly -->
<id>distrib-zip-assembly</id>
<configuration>
<descriptors>
<descriptor>src/main/assembly/fat-jar-assembly.xml</descriptor>
<descriptor>src/main/assembly/distrib-zip-assembly.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>${ucanaccess.console.main}</mainClass>
</manifest>
</archive>
<appendAssemblyId>true</appendAssemblyId>
</configuration>
<goals>
Expand All @@ -318,6 +362,7 @@
</execution>
</executions>
</plugin>

</plugins>

</build>
Expand Down
4 changes: 2 additions & 2 deletions src/main/assembly/console.bat
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ IF EXIST %LOCAL_HOME_JAVA%\bin\java.exe (
%LOCAL_JAVA% -version
@ECHO.

SET CLASSPATH="%UCANACCESS_HOME%\ucanaccess-${project.version}.jar;%UCANACCESS_HOME%\lib\hsqldb-${dep.hsqldb.version}.jar;%UCANACCESS_HOME%\lib\jackcess-${dep.jackcess.version}.jar"
SET CLASSPATH="%UCANACCESS_HOME%\${artifact.artifactId}-${artifact.version}-${uber.jar.classifier.name}.jar"

%LOCAL_JAVA% -classpath %CLASSPATH% ${ucanaccess.console.main}
%LOCAL_JAVA% -jar %CLASSPATH%
PAUSE
6 changes: 3 additions & 3 deletions src/main/assembly/console.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#!/bin/sh

UCANACCESS_HOME=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
echo $UCANACCESS_HOME
echo UCANACCESS_HOME: $UCANACCESS_HOME

CLASSPATH="$UCANACCESS_HOME/ucanaccess-${project.version}.jar:$UCANACCESS_HOME/lib/hsqldb-${dep.hsqldb.version}.jar:$UCANACCESS_HOME/lib/jackcess-${dep.jackcess.version}.jar"
CLASSPATH="$UCANACCESS_HOME/${artifact.artifactId}-${artifact.version}-${uber.jar.classifier.name}.jar"

if [ -d "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then
JAVACMD="$JAVA_HOME/bin/java"
else
JAVACMD=java
fi

"$JAVACMD" -cp $CLASSPATH ${ucanaccess.console.main}
"$JAVACMD" -jar $CLASSPATH
30 changes: 6 additions & 24 deletions src/main/assembly/distrib-zip-assembly.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@
<includeBaseDirectory>false</includeBaseDirectory>

<files>
<file>
<source>${project.build.directory}/${project.artifactId}-${project.version}.jar</source>
<outputDirectory>/</outputDirectory>
</file>
<file>
<source>LICENSE.txt</source>
<outputDirectory>/</outputDirectory>
Expand All @@ -32,29 +28,15 @@
<filtered>true</filtered>
<fileMode>0755</fileMode>
</file>
<file>
<source>${java.io.tmpdir}/${artifact.artifactId}-${artifact.version}-${uber.jar.classifier.name}.jar</source>
<outputDirectory>/</outputDirectory>
<filtered>false</filtered>
<fileMode>0755</fileMode>
</file>
</files>

<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<useTransitiveDependencies>false</useTransitiveDependencies>
<excludes>
<exclude>io.github.spannm:${dep.jackcess.artifactId}</exclude>
</excludes>
</dependencySet>

<dependencySet>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<useTransitiveDependencies>false</useTransitiveDependencies>
<includes>
<include>io.github.spannm:${dep.jackcess.artifactId}</include>
</includes>
<outputFileNameMapping>${artifact.artifactId}-${dep.jackcess.version}.${artifact.extension}
</outputFileNameMapping>
</dependencySet>

<dependencySet>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
Expand Down
35 changes: 0 additions & 35 deletions src/main/assembly/fat-jar-assembly.xml

This file was deleted.

0 comments on commit 7c5c65a

Please sign in to comment.