On Mon, Aug 1, 2011 at 7:45 PM, Alex Boisvert <[email protected]> wrote:
> On Mon, Aug 1, 2011 at 9:30 AM, Matteo Vaccari <[email protected]> wrote:
>
>> On Mon, Aug 1, 2011 at 4:58 PM, Matteo Vaccari <[email protected]> wrote:
>> >
>> > Hi,
>> > I'm new to Buildr; I'd really want to use it for my project, but I'm
>> running into a couple of problems with dependent projects, and I would be
>> very grateful if you could lend me a hand.
>> > It boils down to this: if you have a simple setup like
>> > define 'problematic', :version => '0.0' do
>> > define 'foo' do
>> > package :jar
>> > end
>> >
>> > define 'bar' do
>> > compile.with project('foo')
>> > end
>> > end
>> > where both projects are Java project.
>> > Problem one: it will only work if project 'foo' is packaged as a jar. Is
>> there a way to make it work when 'foo' is packaged as a war? Because when
>> you package 'foo' as a war, the compile task for 'bar' fails.
>> > Problem two: suppose project 'bar's test classes need to be compiled with
>> project 'foo's test classes. I see in the wiki there's a suggested
>> workaround
>> > define "A" do
>> > package(:jar)
>> > end
>> > define "B" do
>> > compile.with project("A")
>> > test.with project("A").test.compile.target # <---- HERE
>> > package(:jar)
>> > end
>> > This works for the compile task, but it breaks the eclipse task. It
>> turns out that the generated .classpath contains an entry like
>> > <classpathentry
>> path="/Users/matteo/work/problematic/foo/target/test/classes" kind="src"
>> excluding="**/.svn/|**/CVS/"/>
>> > that does not work in Eclipse.
>> > What can I do?
>>
>> OK, I found a sort-of solution for both problems:
>>
>> define 'problematic' do
>> define 'foo' do
>> package :war
>> end
>>
>> define 'bar' do
>> foo_src = project('foo').compile.target
>> foo_test = project('foo').test.compile.target
>> compile.with project('foo'), foo_src, foo_test
>> eclipse.exclude_libs += [foo_src, foo_test]
>> end
>> end
>>
>> The first entry in compile.with is used by the eclipse task, to set up
>> the correct dependency on 'foo'. The other two are used by the
>> compile task. The eclipse.exclude_libs fixes the incorrect entries in
>> .classpath.
>>
>
> I think that's the right way to do things... except for the eclipse
> exclusions -- those should be properly handled by the eclipse task. Please
> file a bug.
My feeling is that it should work like this:
> define 'problematic' do
> define 'foo' do
> package :war
> end
>
> define 'bar' do
> compile.with project('foo')
> end
> end
This works OK in eclipse, as it lets bar use both src and test from
foo. It fails in compilation though. I would say that the problem is
in the compile task.
Matteo