Skip to content

Optimise .jar files with JarTighten #50

Optimise .jar files with JarTighten

Optimise .jar files with JarTighten #50

Workflow file for this run

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: Java CI with Gradle (Forge 1.20.x - draft release)
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'v*1.20.x.forge' # Push events to matching v*1.20.x.forge
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- name: Install advancecomp
run: sudo apt-get install advancecomp
- name: Install strip-nondeterminism
run: sudo apt-get install strip-nondeterminism
- name: Install jq
run: sudo apt-get install jq
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Build with Gradle
env:
BUILD_RELEASE: ${{ github.event.release.prerelease == false }}
uses: gradle/gradle-build-action@v2
with:
gradle-version: wrapper
cache-disabled: true
arguments: build --scan --stacktrace --warning-mode all
- name: Rezip mod .jar files to remove directory entries
run: bash removeDirectoryEntries.sh
- name: Run strip-nondeterminism on built .jar files
run: strip-nondeterminism build/libs/*.jar
- name: Run advzip (-i 9999) on built .jar files
run: advzip --shrink-insane -kzi 9999 -p build/libs/*.jar
- name: Run ECT on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 --disable-png --disable-jpg -strip -zip $file; done
- name: Run ECT (-9) on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 -9 --disable-png --disable-jpg -strip -zip $file; done
- name: Run ECT (-99) on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 -99 --disable-png --disable-jpg -strip -zip $file; done
- name: Run ECT (-999) on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 -999 --disable-png --disable-jpg -strip -zip $file; done
- name: Run ECT (-30060) on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 -30060 --disable-png --disable-jpg -strip -zip $file; done
- name: Run ECT (-90032) on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 -90032 --disable-png --disable-jpg -strip -zip $file; done
- name: Run ECT (-9999) on built .jar files
run: for file in ./build/libs/*.jar; do ./ci-tools/ect-ubuntu-x86-64 -9999 --disable-png --disable-jpg -strip -zip $file; done
- name: Run JarTighten on built .jar files
run: for file in ./build/libs/*.jar; do java -jar ./ci-tools/JarTighten-1.2.6-all.jar -o -c -E -S -t -z -j --mode=EXTENSIVE --zopfli-iter=9999 --optimise-existing-streams --optimise-recompressed-streams --compare-size-bits $file $file; done
- name: Draft release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref }}
name: Draft release ${{ github.ref }}
body: Replace this text with the description of this release!
draft: true
prerelease: false
files: build/libs/*.jar