IDE Meta Generation Should Not Require Sources

Details

Description

The `eclipse` task (and I assume `idea` as well) requires at least one source file of the relevant type to be found within a source directory. For example, for project meta generation to succeed, the src/main/java/ directory (and/or subdirectories) must contain at least one .java file. The same holds for scala. If these source files are not specified, the task silently fails and just doesn't generate any project meta.

It seems to me that this would be a fairly common use-case: using Buildr to setup a project prior to creating any sources and then doing the actual coding within an IDE. I would propose that the source autodetection be fixed to just assume that there will be source files within the relevant source dirs if they exist. At the very least, a warning should be printed regarding the absence of sources and that this prevents IDE meta gen.

Alex Boisvert
added a comment - 07/Jun/08 01:59 You don't need any source, you can specify which languages you want to use by stating,
compile.using :javac
or
compile.using :scalac
and similarly for tests,
test.compile.using :javac
or
test.compile.using :scalac
If there are no sources or no indications in the Buildfile, what should we assume?

You should look for the source directories themselves. Project Layouts define where each language's source files should go. Assuming the hierarchies are disjoint (as is the default) it should be possible to just look for the relevant directory and assume that the corresponding language will be required. For example, if src/main/java/ is present (empty or otherwise), it may be assumed in the default layout that the :javac compiler will be required; thus, Java project metadata should be generated.

Daniel Spiewak
added a comment - 07/Jun/08 02:10 You should look for the source directories themselves. Project Layouts define where each language's source files should go. Assuming the hierarchies are disjoint (as is the default) it should be possible to just look for the relevant directory and assume that the corresponding language will be required. For example, if src/main/java/ is present (empty or otherwise), it may be assumed in the default layout that the :javac compiler will be required; thus, Java project metadata should be generated.

I have a project that does not have src/main/java folder. Instead, it has src/test/java and unit tests written in java under that subdirectory. The eclipse task does not generate project meta for this project. I'm not sure if it's related to this issue.

Sean Ahn
added a comment - 03/Oct/08 00:13 I have a project that does not have src/main/java folder. Instead, it has src/test/java and unit tests written in java under that subdirectory. The eclipse task does not generate project meta for this project. I'm not sure if it's related to this issue.

Antoine Toulme
added a comment - 28/Feb/10 08:40 Note that the eclipse task got a overhaul since and now has a good configuration. It is possible to set the natures and builders (even their order) for each project.
AFAIK, the eclipse task still relies on the compile.language to find whether the java nature is needed.