Hacker News new | past | comments | ask | show | jobs | submit login

Dependency management and build systems suck though :D



Gradle can become a mess when people want to show their smartness with the build system, don't allow them (even better if one just avoids Gradle entirely).

Maven works fine, it has so much history that most problems you encounter have been solved. It's also pluggable so you can extend to your heart's desires (but you shouldn't, same as Gradle when people try to be too smart with plugins it's time to tell them to stop).

Could it be better? Of course! But just as the rest of Java: it gets the job done, and it's absolutely fine after you deal with some idiosyncrasies. Every programming language environment has their own unique set of idiosyncrasies to deal with.

Java is a workhorse, it's not sexy, it's not pretty but will get you pretty far in most production environments.


This is annoyingly true, although maven is nice enough to work with. Certainly beats its alternatives handily, being declarative and such. Not nearly as annoying as Ant and Ivy, and at least IMO, the less one needs to think about Gradle, the better.

But of course, maven could also be a lot better.


Why?

Maven and Gradle both have a learning curve, but IMO they're better than what exists for C/C++ (which really don't have _any_ standard dependency management).


I fully agree that this problem also exists in C/C++. I was comparing it to the likes of Go or Rust.


Oh, sure. Go and Rust both have great dependency management.


I would like to add though that there is a big difference between a language-specific build tool that pretty much can’t build anything else and will bleed out at the first sight of another language in the project, and something like Gradle which is a fully generic build system capable of, say, a whole android build.

Of course a specialist will be “more elegant” at solving it’s intended problem, but that’s often not all we need.


I much prefer composing a handful of simple and elegant tools, rather than working with a single ones that tries to do everything for everyone. The latter invariably turns into a mess.


Yes, because meta programming in macros, makefiles, and embedding binary libraries or using git submodules is soo much more elegant.. yikes.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: