5 ms·
The first real build system I used was Maven - ie. huge declarative XML files for Java projects. Despite its boons for resolving dependencies, its declarative s
by mherrmann 9y ago
The first real build system I used was Maven - ie. huge declarative XML files for Java projects. Despite its boons for resolving dependencies, its declarative style and assumptions about build phases hit the limits on every project I used it for. I've come to see any build script as programming, however declarative. These days, I simply use Python scripts where separate functions describe what's to be done for each build target. Yes I have to write some basic functionality myself. But it's extremely flexible. YMMV for larger projects, but I am very happy with this.
- pjmlp 9y agoMaven was the fourth build system I got to use, and coming from Ant I kind of hated it, because the company was trying to shove our Ant workflows into Maven plugins, and the experience was quite bad. A few years later I embraced the declarative way, and changed my mind about it. In fact, I only use Gradle instead of Maven on Android projects, because Google forces me to do so. From my perspective many projects have issues with Maven, because it is easier to think imperative instead of declarative.
- eitland 9y agoI also embraced maven. My rule of thumb is: if it doesn't "just work" with Maven and Netbeans I (or maybe sometimes someone else) is doing something wrong. (Although that "wrong" could be using a project that isn't ready for production use.) At one place we had this saying: I fixed more and more problems by removing my bosses code (i.e. falling back to the relatively sane defaults.)
- tzahola 9y ago>I fixed more and more problems by removing my bosses code Very interesting phenomenon! Paraphrasing the Peter principle: incompetent people will be promoted until they can inflict the least harm. In some sense, this is a natural self-defense mechanism of an organization, like how the body encapsules benign tumors in connective tissue.
- eitland 9y agoEh, let me point out that for someone who claimed he didn't like to code he was very good. I've seen consultants that would create crazier code. He just wasn't used to Maven conventions. Oh, and we both laughed :-)
- eitland 9y agoFWIW: I wasn't the one downvoting.
- tzahola 9y agoThanks man, here's an upvote for letting me know :3
- majewsky 9y ago> These days, I simply use Python scripts where separate functions describe what's to be done for each build target. Congratulations, you're reimplemented make(1), except with Python instead of shell scripts.
- mherrmann 9y agoBesides several other differences between a Make build and a Python script, which your reply ignores, I do much prefer writing in Python over shell scripts.