JReleaser: quick and effortless way to release your project
1–10 of 37 posts
Re: JReleaser: quick and effortless way to release your project
#2Re: JReleaser: quick and effortless way to release your project
#3Re: JReleaser: quick and effortless way to release your project
#4Now we have MacOS ARM, MacOS x86, Linux ARM/x86, Windows ARM/x86.
Even for a basic "cross platform" Java program (that bundles the JRE), that's 6 installs, which ostensibly need to be built on their respective platforms. Add on to that if you using something that includes a binary (like, say, SQLite, much less JavaFX which I work with).
The release burden is, well, frankly, daunting for a small project.
My honest thinking for my next project release is simply to tell folks to install the JDK, download the source code, and have them run:
./mvnw javafx:run.
(Or they can run go.sh/go.bat which essentially does the same thing.)That'll download all of the stuff it needs including the Maven runtime and all of the libraries, as appropriate, build the project, and run it. It's Fast Enough (maybe it's awful on a small RPi, I dunno).
When I get more than 5 downloads, folks can vote as to which installer to work on.
Creating the executables was quite the black hole. I didn't create one for Linux because I honestly didn't know what packaging scheme to use.
In theory, the CI infrastructure on GitHub will let you build on different platforms, yet another black hole of time to sink into.
So, yea, at least initially, I think the maven wrapper will be my "release model". SHOULD be pretty simple.
Re: JReleaser: quick and effortless way to release your project
#5This doesn’t seem to address building installers, unfortunately.
Re: JReleaser: quick and effortless way to release your project
#6Re: JReleaser: quick and effortless way to release your project
#7Earlier quoted context omitted.
It creates MacOS packages, Windows MSI, and Linux bundles. Those are all "installers", right?
My apologies, I couldn’t find this in the documentation. Can you give me a link?
Re: JReleaser: quick and effortless way to release your project
#8When I released my last Java project, I came out with a MacOS DMG, a Windows EXE installer, a Windows MSI installer, and a Fat Jar for Linux. Now we have MacOS ARM, MacOS x86, Linux ARM/x86, Windows ARM/x86. Even for a basic "cross platform" Java program (that bundles the JRE), that's 6 installs, which ostensibly need to be built on their respective platforms. Add on to that if you using something that includes a bin…
Presumably the major issue in distributing JavaFX applications (or most Java 9+ applications in general) is dealing with jlink. That leads to the problem in question: having to create N * M executable blobs, where N = # of operating systems and M = # of CPU architectures.
Re: JReleaser: quick and effortless way to release your project
#9When I released my last Java project, I came out with a MacOS DMG, a Windows EXE installer, a Windows MSI installer, and a Fat Jar for Linux. Now we have MacOS ARM, MacOS x86, Linux ARM/x86, Windows ARM/x86. Even for a basic "cross platform" Java program (that bundles the JRE), that's 6 installs, which ostensibly need to be built on their respective platforms. Add on to that if you using something that includes a bin…
Distributing a single uberjar, whenever possible, is generally a good idea IMO. One major reason I like the JVM as a platform is that I don't need to mess with containers or native images. To reduce burden of deployment, native images are out of the question. Thus the choices are "force user to have Java runtime installed" or "force user to have container runtime installed". Double-clicking a JAR file (or running "ja…
Yeah, seems to work for games well enough. Ship uberjar + small wrapper shellscript for Linux/macOS, .bat for Windows. Should work everywhere*
Re: JReleaser: quick and effortless way to release your project
#10A big shout-out to Andres Almiray, the maintainer of JReleaser, who has always been super-fast to answer any questions and help to sort out issues when I ran into them.