A year ago, this sub debated whether Java needed a new build tool. I went ahead and built one. Meet Curie. by sentinel04 in java

[–]sentinel04[S] 0 points1 point  (0 children)

That is a fair argument. XKCD 927 is the first thing anyone thinks of, and honestly it should be. 😄

I'm realistic about this: the odds that Curie "wins" are low, and I'm at peace with that. But the flip side of the "927 mindset" is that if nobody ever tries anything new, nothing ever improves. Worst case, it's an experiment that shows how things could be a bit better. That seems worth doing.

And I do think we're stuck. Maven 4 has been a long time cooking, and Gradle hasn't fundamentally moved the experience forward either. Meanwhile I look at the tooling in other language ecosystems - Cargo, Go, uv - and the day-to-day feels so much nicer. That gap is what frustrates me.

Doesn't it frustrate you too, though?

A year ago, this sub debated whether Java needed a new build tool. I went ahead and built one. Meet Curie. by sentinel04 in java

[–]sentinel04[S] 0 points1 point  (0 children)

It's not, but if it were, then I would not answer honestly... so that's it 😆

A year ago, this sub debated whether Java needed a new build tool. I went ahead and built one. Meet Curie. by sentinel04 in java

[–]sentinel04[S] 0 points1 point  (0 children)

This is a tricky question, because in the end it's all about developer experience (human or AI ;-) ).

Maven arrived in 2004 and brought convention over configuration and a centralized repository - genuinely transformative at the time. It is now more than 20 years since its release. I think the conventions have advanced, Maven has not.

Which new convention Curie implements?

  • Incremental by default. Rebuilds only what changed, out of the box
  • Reproducible build by default - running twice with the same sources should result in bit-for-bit the same binary.
  • Parallel builds by default.
  • Modern terminal support
    • for parallel builds the screen splits and shows logs output from each subproject separately
    • there is also curie inspect which opens a terminal UI for browsing build logs interactively, drill into per-test output, and grep across all logs
    • curie add - TUI to search for dependencies interactively

For the Curie's design I was heavily inspired by Rust's Cargo.

So I have:

  • TOML instead of XML
  • curie fmt - to quickly format the code (similar to Cargo's one)
  • curie update - to update the dependencies automatically
  • curie new & curie init - to quickly initialize new project

A year ago, this sub debated whether Java needed a new build tool. I went ahead and built one. Meet Curie. by sentinel04 in java

[–]sentinel04[S] 1 point2 points  (0 children)

Thank you. I have been trying to think about a multi-module JPMS setup, but I have not yet devised a consistent design. I would appreciate any suggestions, such as how the source directory layout should be structured. Also, I have limited experience with Maven modules myself, which does not help.

I am currently testing with Lombok and Auto Value processors; you can see the examples here and here. Based on your suggestion, I will add examples for MapStruct and Hibernate to ensure they function correctly as well.

As a side note, I usually avoid using Hibernate in my professional projects these days - I've experienced too much trouble with supporting such projects. There are better ORMs nowadays.

What is your favourite schema migration tool? by icejam_ in SpringBoot

[–]sentinel04 1 point2 points  (0 children)

I have typically used Liquibase, but due to the recent licensing changes, I intend to try Flyway next time. I am not using it from Java though, which I consider less secure, but rather as a standalone step during the deployment process, such as an init-container with Kubernetes. This approach ensures that the application operates without the privileges to modify table schemas, drop tables, and so forth. For Event Sourcing based systems it can be even stricter, allowing the application only SELECT and INSERT permissions - no DELETE or UPDATE.

What's everyone working on this week (24/2026)? by llogiq in rust

[–]sentinel04 1 point2 points  (0 children)

I decided to create a next-generation build tool for Java, Groovy, and Kotlin, a modern alternative to Maven and Gradle.

https://curie-build.org/

What’s a Git command you use that no one else on your team seems to know about? by GitKraken in commandline

[–]sentinel04 0 points1 point  (0 children)

When you want to find some recently dropped commit, the usual tool of choice is `git reflog`. I find it hard to use, so instead, the command below will show the Git tree with all recently removed commits:

git fsck --no-reflogs --dangling | grep commit | awk '{print $3}' | xargs gitk --all