I find that Maven hits the balance between the simplicity of a language-agnostic solution and the power of a language-embracing situation exactly wrong. It is huge and complex, comparable to a language, yet it is inflexible and constrained, as if it were simple. The same was true of ant, except it was even more awkward to use.
One direction to go is
cargo, Rust’s build tool. It takes simple toml files as input. You can’t do very much, but it’s incredibly simple to do anything that you can possibly do.
Another direction to go is
sbt. It basically takes Scala as input. Unfortunately, it is mired down with a complex build model with hard-to-discover logic and features.
mill improves on this considerably. If you know Scala, it’s better than trying to use Maven because not only is it faster to learn how to do everything (because you already know Scala and can discover most things that are available from the command-line), it also gives you the full power of a programming language (one you already know, if you’re writing Scala).
Trying to use
mill to build Rust programs would be weird, though. Rather than use
mill itself, I imagine that you’d want a
rust-mill that uses a similar logic to (Scala)
mill but is coded in idiomatic Rust. As long as you’re going to be using Scala, though, I can’t think of any downside of using
mill except possibly that some feature that you need is built-in in Maven and isn’t available in
mill and also isn’t easily emulated with a bit of Scala code.