New IntelliJ Project View Experiences?
Hello all,
I already have another thread running on this forum about it, plus 1 or 2 Jira issues, but I was wondering why not more people are complaining about the new project view. How do you work on multiple modules and their dependencies? Why would anyone prefer a list of ALL dependencies of ALL modules loaded in IntelliJ, compared to the IntelliJ 8 dependency-per-module view? I know now that you can also see the depenencies by Pressing ALT+F1, select the project structure, go to the dependency tab, and go through that list on item at a time, since it's ordered by randomness, instead of, say, alphabetically? And if you then want to see if that class you're looking for is really in that library (I didn't know if I was using Junit 4.5 or 4.7 yesterday, which caused some problems for me...), you'll have to close that window, go to the external libraries list (I have around 200-300 libraries there...really manageable, even though they are nicely bound to some modules (at least, in IntelliJ 8) , and then I have to click the library open, find the classes I'm looking for, and then go back to the module I was actually working on. If I can still remember which one that was after going around my IDE in such a way. The philosophy behind this change is that some users complained (in 2005!!) that they didn't understand where their files went, and that therefore the project view should reflect the file structure. (and external libraries, apparently???).
I don't know if any of you uses Eclipse, but in Eclipse, you can choose between a Resource view (sort of IntelliJ 9 project view) and a Project View (a sort of IntelliJ 8 project view, but less powerful since it lacks modules/groups). In IntelliJ 9, we'll get the the Eclipse Resource view. My question: do you really want that?? "Nobody" in the Eclipse world even uses the Resource view!
In IntelliJ 8, you (could...) see the dependencies of the module in the project view. They are tightly coupled to the module they belong to, and the modules are nicely organized in groups. You cannot be mistaken in which dependency belongs to which module, since it's reflected in the Project View. Also, the list (per module) is around 15-20 dependencies long. This can be easily handled by anyone, since the list is so short. However, when you have around 30 modules (which I have, but usually more, 6 projects, each 4-6 modules) open at the same time, this list can grow to more than 500 dependencies in IntelliJ 9 (around 200-300 in my case because I often depend on the same dependencies).
A question to Jetbrains: if you really want to make this change you intend (or already have done), wouldn't it be better to just allow an extra 'view as' option? For example, a 'View as Filesystem', and a 'View as Project Structure' way? I guess that would already solve most, if not all, of my pains......
Thanks for reading this rant, but it's been keeping me busy for the last couple of days ;-)
Erik
PS: I've attached some screenshots again, to show the difference between IntelliJ 8 and IntelliJ 9....
PS2: You can track this issue here now: http://youtrack.jetbrains.net/issue/IDEA-53408
Attachment(s):
Screen shot 2009-11-09 at 10.36.11.png
IntelliJ 8.png
Please sign in to leave a comment.
Hi Erik, thanks for the screenshots. I haven't actually installed Maia
yet as all I've read on these forums so far hasn't exactly filled me
with confidence about it (unstable vcs support, long standing features
disappearing overnight etc.), so it's good to be able to see what you're
talking about.
So let me get this straight... if a module declares a library - via a
dependency - this doesn't get shown under the module in the project tree
any more? But just dumped into a big list with all the others?
This seems just plain wrong to me... I mean, if you wanted it dumped in
a big list you'd have just declared it as a project/global library right?
N.
I've already talked in the other thread about my problems with the project view, but suffice to say here that this really needs to be provided as an option. While it may work for some people, there are too many problems with the new view to make it compulsory.
Cheers,
Colin
Well Nathan, you are correct about that. I've made an issue about it here (http://youtrack.jetbrains.net/issue/IDEA-25835), but it's closed. I'm not sure why. Please read Dmitry's response, but I absolutely disagree with his statements, and the new project structure makes developing bigger applications really hard. (Maxim provided a bit of information however, but those issues link to issues over 4 years old, so I doubt that these are still relevant.)
I really don't like the big dependencies list either. My experience has been with Maven projects almost exclusively so I'm not sure how this change affects/bothers users with other setups.
When I'm refactoring poms or trying to track down where a dependency is coming from in a multi-module project (usually transitive dependencies) it was nice to see exactly which modules contained which libraries. I also have multi module projects where certain artifacts from that are used by other projects (e.g. a client library) and it was nice to be able to do a quick sanity check of the dependencies for that module before publishing a new version so that I can make sure no extranesous dependencies crept in (again, usually transitive dependencies).
Since this change I've had to resort to using "dependency:tree" (which isn't terribly easy to read) or using the "Dependency Graph" from the Maven projects view which is nice but still not as convenient as seeing the list in the project view. Not to mention you can only view one dependency graph at a time this way.
I really wish they would bring the old view back. In your ticket I see they have made responses to their motivation for changing the structure layout but, as you also stated, I have seen no resonse about the libraries view.
I really think it is a matter of taste rather than usability, and, perhaps, should be configurable. You can still see the external dependencies per module - in the module settings dialog. I always felt that external lib dependncies tree in the Project view added unnecessary clutter. It would often open "by accident" and create an annecessarily busy look and feel of the Project pane. How often do you need to stare at the list of the dependencies? What's wrong with having to open the module settings once in a blue moon and keeping that clutter out of the way the rest of the time? All problems in software development come from too much clutter and unnecessary complexity. So, as far as I'm concerned, the less clutter the better. But it's just my personal preference, and like I said, it probably should be configurable. I always use Maven to manage dependencies, and I, personally, put great effort into minimizing module dependencies, de-coupling things as much as I can. So, if I find that I have to spend more than a few seconds weeding through my lib dependency lists, I know I have a modularity problem.
Cheers,
Constantine
First, I can see your pain, and would support the request for having the
old project structure organization available.
When it comes to the subject of seeing the (Maven supplied) libraries
for a specific module, I'm not sure if the project structure is the
appropriate place for that. Neither is the "Project structure ->
Dependencies" tab however..
While IDEA provides a maven dependency graph, it's not useful in many
aspects. It would be good to have a specific view/window, that would
provide a maven-centric view of dependencies using a tree component
instead of a graphical graph visualization (which doesn't scale to large
numbers of nodes, for one).
Such a view would also be the place for implementing maven specific
actions like "Pull dependency up", "Configure optional dependencies",
"Show dependees (aka reverse dependency view", and many more.
-tt
Hi Taras,
Thanks for the reply! I agree that the Project structure might not be the best location for the Maven dependencies, but in IntelliJ 8, I had absolutely no problem with it. I'm ofcourse open to anything better! (though I can't think of any way to improve it right now). I also don't think that the visual graph is really useful in this case, and I like the (IntelliJ 8) hierarchical structure much better.Being able to refactor the dependencies would ofcourse be a really interesting point, but if this should be an separate screen, or integrated in the main screen, I don't know.
Erik
Having it as an alternate maven structure "view" via the "View as" selector in the Project tool window would probably be the best way to go. Interestingly, when you view as "pakages" the libraries are broken up by module. But you are seeing the packages and not the library/jar name.
Mark,
I agree the discrepancy is odd.
Grant
"Mark Vedder" <no_reply@jetbrains.com> wrote in message
news:8276150.215861258043220043.JavaMail.clearspace@app8.labs.intellij.net...
>
Hi,
What if I add dependency tree to every Maven project in the Maven Projects view?
The problem with current project representation and dependencies is that there is no dedicated module node and, therefore, no plase to show the dependencies.
In the Maven rojects view, though, I could show not only plain list of dependencies, but also a resove-tree.
Thanks,
Anton Makeev
Hi Anton,
Thanks for thinking with us here! Much appreciated! I'm not sure however what you mean. I see the problem: if I compare IntelliJ 8 to IntelliJ 9, I see a sort of extra 'node' which has all the dependencies + the real directory. Wouldn't it be possible to use the directory as that node? I've created a small mockup to show what I mean.
In the process of creating the mockup, I remembered I heard something about a dependency graph in IntelliJ 9, but I couldn't find it anywhere. I googled, used the help, read the blog, but nowhere any information. But finally I found it, in the Maven projects, and right click on a module. But I don't think the implementation of that is top notch. You already have a dependency view, but for Spring configurations. Why make this one different? I was hoping that by opening a Pom, you would see another tab, which would show the dependencies. I think that's much better, since then you can have room for the buttons (zoom in, zoom out, etc), plus an easy way to close the window (I even had problems closing the dependency graph! I know, I know, but I was looking for a button or icon. Pressing Escape closed the window). Integrating the dependency graph in the same way as the Spring one would be nicers, in my opinion.
In the mockup, I've also attached the dependencies per module, so it's changed slightly compared to IntelliJ 8, though I still haven't got a problem with how it's currently solved in IntelliJ 8.
The resolve tree (I guess you mean a hierarchical view of dependencies, instead of the plain list, right?) could indeed be a really nice addition!
So, please take a look at the mockup. I'm wondering what you think of it.
Kind regards,
Erik
Attachment(s):
ideas for intellij 9.png
Anton Makeev wrote:
I'd just like to say that I don't use Maven, so all this Maven talk goes
in one ear and out the other :) But I'd just like to request that if
any improvements do come of this thread, can they not be specific to
Maven please?
Cheers,
N.
Thanks for the explanation, Erik,
I like the idea with dependencies tree injected into the Project structure, but with the current implementation on the project structure it is not possible: the module can be splitted into sevveral content roots and it is not clear where to show the Libraries node.
As for the Dependency Graph, I agree with you that it would be better to add a 'Dependencies' tab to the pom editor. At the moment I cannot implement it since we are close to the release. I'll add the dependency tree to every Maven project node in the Maven Project tool window now and will improve it and add an editor tab after the release.
Thanks,
Anton Makeev
Amen - we don't use Maven, but most of the problems with the new Project View are not Maven specific.
Nathan,
This is not specific to Maven, this is specific to module dependencies, where the current implementation in IntelliJ is to put all module dependencies in a big list in the Project View, instead of a list per module, like in IntelliJ 8. So, yes, it does affect you ;-)
Erik
Hi Colin, same reply at the same time? Nice :)
What do you think of the mockup and the enhancements I proposed? Will this work from a user perspective?
Hi Anton,
I again have a hard time getting what you say. It must be me. You say the module can be split into several content roots? How is this possible? I thought the Project View reflects the file system, which is a hierarchical structure, meaning there can be only one root, right?
For example, if I have a file structure like this:
project 1
- module 1.1
- module 1.2
project 2
- module 2.1
- module 2.2
Then I'd like to see module 1.1 dependencies in the module of 1.1, and the same for the other modules. It could look like this:
project 1
- module 1.1
-- src
-- target
-- [libraries]
- module 1.2
-- src
-- target
-- [libraries]
project 2
- module 2.1
-- src
-- target
-- [libraries]
- module 2.2
-- src
-- target
-- [libraries]
The dependency graph is not a blocking issue for me not to upgrade and promote IntelliJ 9. The project view is.
Currently, I don't think the dependency graph a good replacement for 'mvn dependency:tree' (mostly because I usually 'grep' in the output of dependency:tree, since the lists are sometimes quite big, which is currently not possible in the IntelliJ version. I've only looked once at the IntelliJ version btw, but the graph was 4 times the size of my screen (which is already 1920x1200), so it was hard to find the library I was looking for. But it's great for a visual overview!), though I like the addition of it.
Hi Eric,
Yep, I think that looks good. My main problem with the project view at the moment is actually the lack of module groups rather than the dependencies, but I'm sure the dependencies would annoy me too :-)
Cheers,
Colin
Hi Kolin
I agree with you totally: I also cannot work without the module groups. At the moment, when I use Maven, I just add a new module to the main pom (no matter where the Pom is located, it could be in a totally different directory somewhere on my file system), and it's added to the module groups like it's part of the current project. With the new IntelliJ 9, this is not possible anymore, and I spend to much time navigating my directory structures, instead of my project structure. Like I said above, this is a blocking issue for me.
Erik
The Module consists of content roots that do not necessary match the module root. There can be several content roots per module and they cen be distibuted across the directory structure; in this case one module will be represented by several directories in different directory branches.
The longer I read this discussion the more scared I get.
Anton, please, whatever you do, do not over-engineer! Seems to me, a lot of guys here are trying to be too smart - instead of, perhaps, focusing on their own jobs. Why not just have an option (a short-cut button, context menu option, key shortcut, etc.) to display the dependencies for the selected module on demand? The dependencies may be displayed in a separate pane that may be floating, fixed, hidden, etc. Something similar to the Structure pane for the current class. Why does the dependency tree have to be a permanent fixture in the Project structure (the regular Project or Maven pane, doesn't matter)? It just adds more clutter. It should not matter how many content roots a module has. That does not affect the list of the modules' external dependencies.Am I missing something in this conversation? Sounds like way too much ado about nothing.
It would also be nice for IDEA to not display any .iml files in the Project tree. Does anyone need to see them? The Package view is much cleaner, but I find the Project view more useful, and use it all the time. I would prefer to see ONLY source and test folders in that view, with the per-module lib dependencies available on demand with a single click - from anywhere. Wouldn't that be the simplest solution?
Thanks,
Constantine
> Anton, please, whatever you do, do not over-engineer! Seems to me, a lot of guys here are trying to be too smart - instead of, perhaps, focusing on their own jobs.
My guess is that it would just be the best to get the old Project View back, and use the IntelliJ 9 view (minus the dependencies and the bold folders) as a resource view. Problem solved.I don't know who you're referring to, but this discussion is about a piece of functionality which used to work in IntelliJ 8, and is lost in version 9.
> Why not just have an option (a short-cut button, context menu option, key shortcut, etc.) to display the dependencies for the selected module on demand? The dependencies may be displayed in a separate pane that may be floating, fixed, hidden, etc. Something similar to the Structure pane for the current class.
>Why does the dependency tree have to be a permanent fixture in the Project structure (the regular Project or Maven pane, doesn't matter)
Well, maybe it doesn't have to be, but it currently is in 8, and to me, that sounds perfectly reasonable. After all, your dependencies are part of your project, right? So what beter plae to show them in the Project View? If I wanted a 'resource view', I would use that (but that's currently not available in IntelliJ (or maybe commander or something), but I never had a use for that in the last 5 to 6 years.
> It just adds more clutter.
Well, it's already in IntelliJ 8, so it doesn't 'add' anything. But I haven't seen any of your comments stating it's an issue when version 8 was released. So why is it a problem now for you?
> It should not matter how many content roots a module has. That does not affect the list of the modules' external dependencies.Am I missing something in this conversation? Sounds like way too much ado about nothing.
I also don't understand this. Maybe I'm not sure what a content root is?
> It would also be nice for IDEA to not display any .iml files in the Project tree. Does anyone need to see them? The Package view is much cleaner, but I find the Project view more useful, and use it all the time. I would prefer to see ONLY source and test folders in that view,
>with the per-module lib dependencies available on demand with a single click - from anywhere. Wouldn't that be the simplest solution?
Source files, and test folders...and ofcourse xml...and velocity templates...and html when working with Wicket, but not when creating a webapp, and images, when they are resources...and property files, outside the source folder. Ah, and an option to see the 'documentation' folder, right?
>this discussion is about a piece of functionality which used to work in IntelliJ 8, and is lost in version 9.
Yes, it used to be in Idea 8, and I agree with you that it was better than bundling all dependencies in one pile per project vs. per module. But my point is that there probably is a better and simpler solution anyway - and this discussion is much ado about nothing...I don't want IDEA to be like Eclipse - with too much unnecessary stuff permanently displayed on the screen. Things that I only need to check occasionally should be available on demand. So, while the Idea 8 solution was more logical, it was still often annoying to see and scroll through an accidentally expanded list of external libs while trying to get to your source file. That list opens each time you jump to the source code of a 3rd party class (available or decompiled) and in most cases you just need to take a quick look at the class itself but not at the hundreds of other classes and packages in that library. I often felt annoyed - in Idea 8 or 9 - by my project view suddenly expanding into a list of hundreds of 3rd party classes that I don't care to see. So, removing it alltogether from the project view, to me, would be a logical thing to do. If such thing is still available on demand - with a single click - that should be the only thing we need.
>Well, it's already in IntelliJ 8, so it doesn't 'add' anything. But I haven't seen any of your comments stating it's an issue when version 8 was released. So why is it a problem now for you?
See my points above... I never thought that having external dependencies in the project view was adding much, and I only occasionally visit the forum since I have too much work to do. Once we have touched that subject, I am simply suggesting to find an ultimate solution rather than a partial one.
>Source files, and test folders...and ofcourse xml...and velocity templates...and html when working with Wicket, but not when creating a webapp, and images, when they are resources...and property files, outside the source folder. Ah, and an option to see the 'documentation' folder, right?
Most of the file types you have mentioned belong either under Resources, or sources. No, the Documentation folder does NOT belong in the project view. There is a way to point IDEA to your javadocs that should be sitting elsewhere, outside your module roots. The module roots are for sources and resource files.
And by the way, for those who does not use Maven (and does not want to hear about it), perhaps you should look into it. Maven introduces and encorages universal standards for project/module structure (so you don't have to come up with home-grown crafty solutions that you later realize you can't manage efficiently) and allows your project configurations to be IDE-agnostic! (Unless of course you start putting IDE-specific plug-in dependencies into your maven POMs, which is a bad idea. Eclipse people do that all the time, but, hey, they also include eclipse jar dependencies into their applications! Those crazy eclipse users... )
Please don't start this endless flame war discussion again. Some of us have good reasons for not using Maven (we use Ivy, for example), and that doesn't mean that we're not familiar with Maven, just that Ivy works better for us. In our case it works better precisely because Ivy doesn't force a project structure on us (among other reasons). If you like Maven, great - but it has very little to do with this discussion.
Chill. The Maven reference was just a side note, and I don't care if you use Maven, or not. I just mention that - of all things - Maven specifically helps introducing uniformity and sanity to all projects. I often read posts in which people express very peculiar demands for IDEA - to support this or that - only because their project structure is a mess. As for the project view and dependencies, the list of your module dependencies does not depend on what you use. So, I agree, the suggestion to move it into the Maven pane is not relevant.
Hi Anton,
Any updates on this? I tried (again) to work with IntelliJ 9, and it's driving me nuts when working with multiple modules. Having the dependencies all in on big place, and not visible per module is not a workable situation for me. I was hoping you would have some kind of solution for this before the 9 release?
Thanks,
Erik
Yes, Erik, I've added a dependency tree to every project in the Maven Projects tool windows.
This functionality will be available in the next eap.
Thanks,
Anton Makeev
Hi Anton,
Thanks for the quick reply. I was however more referring to the 'Not Having A Huge Pile Of Dependencies Of All My Modules' problem in my project view. Or does this dependency tree also solve this? (Would you happen to have a screenshot, or would that be to much efforts?)
Thanks,
Erik
If I am not mistaken, the new dependency view in the Maven tool window is in 92.24. At least what I am seeing was not in 90.193. See attached screenshot.
Attachment(s):
screenshot.png
Hi Mark,
Thanks for posting the screenshot. I will download the EAP, but I have a bad feeling about this. It looks like you cannot see the source attached to those dependencies, plus now I need two screens open: the project view, and the maven structure (which I have never open). And it still doesn't solve the issue for non-maven projects... Now that I think of it, I will download the EAP immediately.
Erik