Is the multiple project support ready yet?

Howdy, all

I scanned through the release notes for the last couple EAP releases,
but did not see the multiple project support in them.

This is a big feature, so I can understand if it is not there in even
preliminary form as yet. Any ideas when it will show?

Here is a brief explanation of our structure, and the use case that
worries me:

Assume a base project in one directory, an intermediate project that
uses the base project in a different directory, and several dozen
applications using both the base and the intermediate project. Again,
each has its own directory. The JetBrains plan would have each
application include a reference to the base and the intermediate.
Assume both the intermediate and and an application project are open -
would IDEA handle a change to intermediate gracefully? In other words,
would the change information propagate to the application project in
good order, without lots of rebuilding? We might have a dozen apps
open, as we want to catch changes in intermediate that cause any one of
the apps to break, but we sure do not want to compile the intermediate
classes a dozen times.

The test, of course, will come when we try it, but it is probably easier
to think about in this stage than later.

Scott

3 comments

If your "intermediate project" is compiled into the same directory for all
applications using it then you won't need to recompile it multiple times.

--
Valentin Kipiatkov
JetBrains, Inc
http://www.intellij.com
"Develop with pleasure!"

"Scott Ellsworth" <scott@alodar.com> wrote in message
news:scott-F3F6A7.13573310042003@news.intellij.net...

Howdy, all

>

I scanned through the release notes for the last couple EAP releases,
but did not see the multiple project support in them.

>

This is a big feature, so I can understand if it is not there in even
preliminary form as yet. Any ideas when it will show?

>

Here is a brief explanation of our structure, and the use case that
worries me:

>

Assume a base project in one directory, an intermediate project that
uses the base project in a different directory, and several dozen
applications using both the base and the intermediate project. Again,
each has its own directory. The JetBrains plan would have each
application include a reference to the base and the intermediate.
Assume both the intermediate and and an application project are open -
would IDEA handle a change to intermediate gracefully? In other words,
would the change information propagate to the application project in
good order, without lots of rebuilding? We might have a dozen apps
open, as we want to catch changes in intermediate that cause any one of
the apps to break, but we sure do not want to compile the intermediate
classes a dozen times.

>

The test, of course, will come when we try it, but it is probably easier
to think about in this stage than later.

>

Scott



0

In article <b76fc0$8pv$1@is.intellij.net>,
"Valentiin Kipiatkov" <valentin@intellij.com> wrote:

If your "intermediate project" is compiled into the same directory for all
applications using it then you won't need to recompile it multiple times.


I can arrange that - each project has a home directory where its source
and ant-built classes live, so adding an idea-built classes directory
for each project in its home dir is trivial.

This should satisfy my use case pretty well.

Scott

0

In article <scott-F28C2C.12593714042003@news.intellij.net>,
Scott Ellsworth <scott@alodar.com> wrote:

In article <b76fc0$8pv$1@is.intellij.net>,
"Valentiin Kipiatkov" <valentin@intellij.com> wrote:

If your "intermediate project" is compiled into the same directory for all
applications using it then you won't need to recompile it multiple times.


I can arrange that - each project has a home directory where its source
and ant-built classes live, so adding an idea-built classes directory
for each project in its home dir is trivial.


Ok, I implemented it for a small test project. All in all, it worked
pretty well. I did run into one concern

Assume A depends on B and on C.
Neither B nor C depend on anything.

In the B project, there is nothing in the classpath. Someone adding a
dependency on C will find out immediately, because C is not in B's
classpath.

In A, both B and C are included as sourcepaths and as seperate
(multiple) output paths.

A developer working on the A project realizes that they need to extend
or refactor B. Because they are doing so from the A project, it would
be easy to add a dependence on C.

A possible solution would be a way to express the classpath as well as
the source and output paths. Thus, when creating the A project, I need
to know what B and C depend on.

An alternative would be to include a whole project, importing its
sourcepath, classpath, and output path, and to compile using that
information. This would mean that A would not have to know precisely
what B or C depends on, but would get that automatically by adding the B
or C project to A.

A similar use case is where B or C has a dependency that A code is not
allowed to have. For example, if B uses xerces inside, but A is not
allowed to call xerces directly, it can be in B's classpath but not A's.
(There can be problems there, as if a class in B extends a class in
xerces, and a class in A extends one in B, one sometimes does, and
sometimes does not, need to have xerces in A's classpath.)

Scott

0

Please sign in to leave a comment.