Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,28 @@ mvn clean package
mvn -Pnative clean package
```

### GitHub Actions & Release Process

The repository includes automated build workflows:

* **CI Build** (`.github/workflows/ci-build.yml`): Runs on every push/PR to test both JAR and native builds for Linux and macOS
* **Release Builds** (`.github/workflows/release-builds.yml`): Automatically creates distribution packages on GitHub releases

**To create a new release:**
1. Create a new tag: `git tag v0.3.2`
2. Push the tag: `git push origin v0.3.2`
3. Create a GitHub release from the tag
4. The workflow will automatically build and attach:
- `SpriteLab-Linux-amd64.tar.gz` (Linux native binary + FFmpeg)
- `SpriteLab-macOS-arm64.tar.gz` (macOS ARM64 native binary + FFmpeg)

**GraalVM Native Image Configuration:**

JavaFX applications require special configuration for GraalVM native-image. The configuration files are located in:
- `src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/`
- `reflect-config.json` - Reflection configuration for JavaFX internal classes
- `jni-config.json` - JNI configuration for native JavaFX components
- `resource-config.json` - Resource includes for FXML, CSS, and images
- `native-image.properties` - Build arguments and class initialization settings

Developed by **FedeiaTech**.
3 changes: 3 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@
<configuration>
<imageName>SpriteLab</imageName>
<mainClass>${exec.mainClass}</mainClass>
<buildArgs>
<buildArg>--verbose</buildArg>
</buildArgs>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"name": "com.sun.glass.ui.mac.MacApplication"
},
{
"name": "com.sun.glass.ui.mac.MacView"
},
{
"name": "com.sun.glass.ui.gtk.GtkApplication"
},
{
"name": "com.sun.glass.ui.gtk.GtkView"
},
{
"name": "com.sun.prism.es2.GLContext"
},
{
"name": "com.sun.prism.es2.GLDrawable"
},
{
"name": "com.sun.prism.es2.GLFactory"
},
{
"name": "com.sun.prism.es2.GLPixelFormat"
}
]
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Args = --no-fallback \
--report-unsupported-elements-at-runtime \
-H:+ReportExceptionStackTraces \
--initialize-at-run-time=com.sun.javafx.application.PlatformImpl,org.controlsfx
--initialize-at-build-time=org.slf4j \
--initialize-at-run-time=com.sun.javafx.application.PlatformImpl,org.controlsfx,com.sun.glass.ui.Application,com.sun.glass.ui.gtk.GtkApplication,com.sun.glass.ui.mac.MacApplication
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,79 @@
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.javafx.tk.quantum.QuantumToolkit",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.glass.ui.mac.MacApplication",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.glass.ui.mac.MacPlatformFactory",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.glass.ui.gtk.GtkApplication",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.glass.ui.gtk.GtkPlatformFactory",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.prism.es2.ES2Pipeline",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.prism.sw.SWPipeline",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer",
"allDeclaredConstructors": true,
"allPublicConstructors": true
},
{
"name": "com.sun.scenario.effect.impl.sw.sse.SSEBoxBlurPeer",
"allDeclaredConstructors": true,
"allPublicConstructors": true
},
{
"name": "com.sun.scenario.effect.impl.sw.sse.SSEBoxShadowPeer",
"allDeclaredConstructors": true,
"allPublicConstructors": true
},
{
"name": "com.sun.scenario.effect.impl.sw.sse.SSEGaussianBlurPeer",
"allDeclaredConstructors": true,
"allPublicConstructors": true
},
{
"name": "com.sun.scenario.effect.impl.sw.sse.SSEMotionBlurPeer",
"allDeclaredConstructors": true,
"allPublicConstructors": true
}
]