2

The very popular IntelliJ IDEA‎ has currently saved a lot of dependencies as actual jar files in their git repository e.g.JUnit, which I don't understand.

Build tools like Maven provide excellent dependency management abilities. Of course Maven dictates a lot of how the build has to happen (source), but imho that is an argument against Maven and not against general automated dependency management.

The Github repository of IntelliJ is very confusing but I think they use Gant - which doesn't include dependency management, but integrates very well with Ivy. So I can understand why they might like using Gant - but why don't they use Ivy?

My actual question is therefore: what could be a reason the IntelliJ IDEA‎ developers (or another team in another situation) didn't use a dependency management system and save their dependencies instead as normal jar files inside their repo?

5
  • 4
    I'm voting to close this question as off-topic because the only people that can answer this question is the IntelliJ Idea team.
    – Doval
    Commented Jun 29, 2016 at 19:00
  • 3
    IntelliJ was first released in 2001, but Maven was not released until 2004.
    – Brandin
    Commented Jun 29, 2016 at 19:57
  • 3
    I'm voting to leave this question open because you don't have to be on the intellij team to know why. Commented Jun 29, 2016 at 20:25
  • @Brandin per my observations maven remained buggy and unstable up until 2008-2009, it only matured in versions released after 2.0
    – gnat
    Commented Jun 29, 2016 at 23:32
  • 2
    In 10 years: Maven shuts down their servers for good, and suddenly IntelliJ is the only Java project that you can still build. A folder of JARs is unlikely to be obsolete for a long time. Commented Jun 30, 2016 at 4:09

2 Answers 2

5

History.

Many of the best practices of computer science are a moving target. Thus any time you work with old code you are working with old ideas. If you ever manage to write code that lasts over a decade you may find yourself explaining why you didn't use foo testing, bar management, or baz omniscience.

If you think you know better feel free to fork it, fix it, and issue a pull request. Maybe they didn't do it because they were waiting for you.

It's good to be up on all the latest techniques. As a professional developer you're expected to be able to navigate old techniques as well. Don't criticize what you aren't prepared to refactor.

1
  • 2
    The last sentence is great :) Commented Jun 29, 2016 at 20:36
2

Availability.

There's already a comment that says something similar, but I also answered a similar question about NuGet (.NET's package manager) a few months ago:
Should we include Nuget PACKAGE folder in version control?

I'm not a Java guy and I don't know Maven, but to me it sounds like it's similar to NuGet: a central package repository where dependencies are pulled from during build when they don't exist on the local machine.

The problem is not just that Maven might shut down completely in 10 years.
Even if they "only" have a short outage right now, every project that depends on the repository wouldn't build during that time.

That's why we are saving our dependencies inside the repositories at work.
Plus, with internal repositories (like we have at work), there's also the problem that our internet connection could die (we already had that, and it involved an excavator).
I'm writing software for internal use, and even without an internet connection, we were able to build and deploy.

The last paragraph is probably not as big of a concern with IntelliJ, though...because the repository itself is on GitHub.

1
  • 1
    I agree with much of this but feel it should be understood that you can use maven and set up your own package repository. I've worked on projects that did. That way, rather than your build being dependant on a 3rd party server it's just dependant on, well everything else maven does working properly. Do it all yourself or trust someone else. Up to you. Commented Jul 1, 2016 at 2:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.