{"slug": "apache-ant", "name": "Apache Ant", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 4, "warners": 0, "score": 2.715, "rising": -0.98, "first": "2025-12-05", "latest": "2026-07-13", "why": "Two other advantages of Ant that MSBuild lacks in a sane way to this day, are macros, and proper documentation.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 1, "compare": 0, "warn": 0}, "spark": [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Two other advantages of Ant that MSBuild lacks in a sane way to this day, are macros, and proper documentation.", "kind": "", "icon": true, "domain": "apache.org", "github_repo": null, "official_url": "https://ant.apache.org", "pricing": "", "aliases": ["Apache Ant"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 738636576, "item_id": 46164786, "url": "https://news.ycombinator.com/item?id=46164786", "by": "bokchoi", "date": "2025-12-05", "version": null, "stance": "recommend", "quote": "this was a pleasant discovery when I had to pick up an old Ant based project recently", "excerpt": "As of Ant 1.9.1, you can use 'if' and 'unless' attributes on any task or element in a target. I stopped using Ant a long time ago, but this was a pleasant discovery when I had to pick up an old Ant based project recently. https://ant.apache.org/manual/ifunless.html", "context": "", "use_case": "Java build automation", "switched_from": "", "story": "CSS now has an if() conditional function"}, {"id": 738577728, "item_id": 46161108, "url": "https://news.ycombinator.com/item?id=46161108", "by": "pjmlp", "date": "2025-12-05", "version": null, "stance": "recommend", "quote": "Two other advantages of Ant that MSBuild lacks in a sane way to this day, are macros, and proper documentation.", "excerpt": "It sure did, you use conditions, no need for contrib. https://ant.apache.org/manual/Tasks/condition.html The else part is easily done by repeating and negating the condition. Two other advantages of Ant that MSBuild lacks in a sane way to this day, are macros, and proper documentation.", "context": "", "use_case": "", "switched_from": "", "story": "CSS now has an if() conditional function"}, {"id": 738576176, "item_id": 46161011, "url": "https://news.ycombinator.com/item?id=46161011", "by": "giamma", "date": "2025-12-05", "version": null, "stance": "recommend", "quote": "If you understood the paradigm, you could write branches in Ant files simply using properties", "excerpt": "Ant did not include IF THEN ELSE, unless you added the contrib package. If you understood the paradigm, you could write branches in Ant files simply using properties and guards on properties (\"unless\"). Using IF in Ant was basically admission of not having understood Ant. This said, I used Ant for a very limited amount of time.", "context": "", "use_case": "Build scripts", "switched_from": "", "story": "CSS now has an if() conditional function"}]}], "caveats": [], "who": [{"by": "brabel", "context": "developer", "url": "https://news.ycombinator.com/item?id=48890209", "date": "2026-07-13"}], "tags": [], "use_cases": ["build tool", "java build automation", "build scripts"], "compared": [], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46092198", "title": "CSS now has an if() conditional function", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=48875377", "title": "Show HN: Ant \u2013 A JavaScript runtime and ecosystem", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 3}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"neutral": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 782243344, "item_id": 48890209, "url": "https://news.ycombinator.com/item?id=48890209", "by": "brabel", "date": "2026-07-13", "version": null, "stance": "neutral", "quote": "I used Apache Ant a lot in my early days as a dev", "excerpt": "It's pretty difficult to tell whether something is, or was at some point, a well known project. Things that were major 20 years ago but are no longer used tend to become invisible since search engines prioritize recent knowledge. For example, I think young developers would not know that SOAP was a major, like really major, technology in the 2000's. If you google for SOAP now, you get \"cleaning products\" mostly, and i", "context": "developer", "use_case": "build tool", "switched_from": "", "story": "Show HN: Ant \u2013 A JavaScript runtime and ecosystem"}, {"id": 738636576, "item_id": 46164786, "url": "https://news.ycombinator.com/item?id=46164786", "by": "bokchoi", "date": "2025-12-05", "version": null, "stance": "recommend", "quote": "this was a pleasant discovery when I had to pick up an old Ant based project recently", "excerpt": "As of Ant 1.9.1, you can use 'if' and 'unless' attributes on any task or element in a target. I stopped using Ant a long time ago, but this was a pleasant discovery when I had to pick up an old Ant based project recently. https://ant.apache.org/manual/ifunless.html", "context": "", "use_case": "Java build automation", "switched_from": "", "story": "CSS now has an if() conditional function"}, {"id": 738577728, "item_id": 46161108, "url": "https://news.ycombinator.com/item?id=46161108", "by": "pjmlp", "date": "2025-12-05", "version": null, "stance": "recommend", "quote": "Two other advantages of Ant that MSBuild lacks in a sane way to this day, are macros, and proper documentation.", "excerpt": "It sure did, you use conditions, no need for contrib. https://ant.apache.org/manual/Tasks/condition.html The else part is easily done by repeating and negating the condition. Two other advantages of Ant that MSBuild lacks in a sane way to this day, are macros, and proper documentation.", "context": "", "use_case": "", "switched_from": "", "story": "CSS now has an if() conditional function"}, {"id": 738576176, "item_id": 46161011, "url": "https://news.ycombinator.com/item?id=46161011", "by": "giamma", "date": "2025-12-05", "version": null, "stance": "recommend", "quote": "If you understood the paradigm, you could write branches in Ant files simply using properties", "excerpt": "Ant did not include IF THEN ELSE, unless you added the contrib package. If you understood the paradigm, you could write branches in Ant files simply using properties and guards on properties (\"unless\"). Using IF in Ant was basically admission of not having understood Ant. This said, I used Ant for a very limited amount of time.", "context": "", "use_case": "Build scripts", "switched_from": "", "story": "CSS now has an if() conditional function"}]}