JReleaser: quick and effortless way to release your project
JReleaser is a tool that simplifies software release processes for various programming languages, supports multiple packaging options, integrates with Git services, and automates tagging, changelog generation, and artifact uploads.
Read original articleJReleaser is a versatile tool designed to simplify the release process for software projects across various programming languages, including Java, Go, Node, Rust, and more. It allows users to calculate checksums, sign files with PGP, and release projects to popular Git services like GitHub and GitLab. JReleaser supports multiple packaging options, enabling the creation of package descriptors for platforms such as Homebrew and Snapcraft. Users can publish their packages to designated stores and announce releases through various channels, including Twitter and Sdkman. The tool emphasizes ease of use with quick configuration options and supports multiple formats like YAML, TOML, and JSON. It also provides a command-line interface (CLI), Maven and Gradle plugins, and Docker integration, making it adaptable to different development environments. JReleaser automates the tagging of releases, generates changelogs, and uploads all necessary artifacts, enhancing distribution and reach for developers.
- JReleaser simplifies the software release process for multiple programming languages.
- It supports various packaging options and integrates with popular Git services.
- Users can publish and announce releases with minimal effort using a single command.
- The tool offers flexibility in configuration formats and development environments.
- JReleaser automates tagging, changelog generation, and artifact uploads.
Related
1JPM: A Maven/Gradle alternative in a single Java file
The project "1JPM" is a Java Project Manager offering an alternative to Maven and Gradle. It is a single customizable Java file for project configuration, eliminating XML or Groovy. Users can integrate it by adding the JPM.java file and executing commands in the terminal. 1JPM treats everything as a plugin, allowing the addition of third-party plugins. It covers essential functions like build, clean, assemble, check, dependencies, help, tasks, and jar, but may lack some advanced features. The project is in early stages, providing basic build capabilities. Users can seek further assistance for details or support.
Launch HN: Release (YC W20) – Orchestrate AI Infrastructure and Applications
Release.ai, founded by Erik, Tommy, and David, offers a platform for orchestrating AI applications, providing free GPU cycles, prioritizing data security, and featuring a workflow engine with deployment templates.
JPlag – Detecting Software Plagiarism
JPlag is a local software plagiarism detection tool supporting various programming languages. It requires Java SE 21, allows customization of detection sensitivity, and can be used via CLI or API.
Replit limits free plan users to 5 repls (unless a $25 subscription)
The replit-export CLI tool allows users to download and back up their Repls from Replit's Starter Plan, requiring an authorization cookie and caution regarding disk space and rate limits.
I'm daily driving Jujutsu, and maybe you should too
Drew DeVault shares his positive experience with Jujutsu, a Git frontend for power users, enhancing workflows despite some limitations, including missing features and a restrictive Contributor License Agreement.
https://github.com/NJAldwin/maven-central-test
I wanted to release a jvm lib on Maven Central -- which no longer requires opening a jira ticket for a new package! Instead, simple DNS TXT verification is all that's needed. However, the caveat is that it's the new Maven Central service, which doesn't have as much support in build tools as the older sonatype one. jReleaser is one of the few tools which supports it.
So I hacked together a fully self-contained minimally reproducible example of a Gradle library, built and published in GitHub using jReleaser.
There were several things that had me scratching my head with jReleaser, and the docs are strangely organized IMO (it comes from supporting so many facets, I believe), but it ended up working well enough!
I ended up adding a doc build and some other stuff to the repo too. Now I have a full example that I can use to trivially publish new libraries (such as in-progress https://github.com/NJAldwin/ambient-consumer ).
(Why Maven Central? Since the demise of jFrog/jCenter/BinTray, there's not been an easy way to widely publish jvm libraries. At work I've used GH packages, but that requires a GitHub login even for public packages, which is a significant barrier IME. JitPack is one option, but it does on-demand builds linked closely to the origin repo, whereas I wanted the classic immutable build published on release.)
A 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.
Would this be a simple lift and shift job to move to JReleaser (as it seems like it just uses jpackage behind the scenes)? With jpackage, if you want to create a Windows exe, it needs to be built on Windows. Similarly, build dmg on Mac and deb for Linux. Does Jreleaser also require this?
[1] https://docs.oracle.com/en/java/javase/22/docs/specs/man/jpa...
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 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.
I also configured the announcement feature, so now I can share each release on my discord server and hopefully soon on LinkedIn.
The documentation of JReleaser is quite comprehensive, however does not fully cover "howto" steps regarding auth for each provider. Which in my case translated to initial cycle of try-and-error with my GitHub actions.
Related
1JPM: A Maven/Gradle alternative in a single Java file
The project "1JPM" is a Java Project Manager offering an alternative to Maven and Gradle. It is a single customizable Java file for project configuration, eliminating XML or Groovy. Users can integrate it by adding the JPM.java file and executing commands in the terminal. 1JPM treats everything as a plugin, allowing the addition of third-party plugins. It covers essential functions like build, clean, assemble, check, dependencies, help, tasks, and jar, but may lack some advanced features. The project is in early stages, providing basic build capabilities. Users can seek further assistance for details or support.
Launch HN: Release (YC W20) – Orchestrate AI Infrastructure and Applications
Release.ai, founded by Erik, Tommy, and David, offers a platform for orchestrating AI applications, providing free GPU cycles, prioritizing data security, and featuring a workflow engine with deployment templates.
JPlag – Detecting Software Plagiarism
JPlag is a local software plagiarism detection tool supporting various programming languages. It requires Java SE 21, allows customization of detection sensitivity, and can be used via CLI or API.
Replit limits free plan users to 5 repls (unless a $25 subscription)
The replit-export CLI tool allows users to download and back up their Repls from Replit's Starter Plan, requiring an authorization cookie and caution regarding disk space and rate limits.
I'm daily driving Jujutsu, and maybe you should too
Drew DeVault shares his positive experience with Jujutsu, a Git frontend for power users, enhancing workflows despite some limitations, including missing features and a restrictive Contributor License Agreement.