I want to compile a Java project which depends on the .class files produced by compiling another project. Both projects use a custom layout, which works fine, and both projects compile to their target/classes directory; there are no artifacts, such as JAR files, and I would like to avoid them if possible.

The following does not work:

define 'ATGDUST' do
compile.dependencies = ATG_DAS + COMMONS_CODEC + COMMONS_DBCP + COMMONS_LANG + COMMONS_IO + COMMONS_POOL +
                           HSQLDB + DDLUTILS + JUNIT + LOG4J
  end

  define 'ATFramework' do
compile.dependencies = ATG_DAS + ATG_DPS + ATG_DSS + ATG_DCS + COMMONS_LANG + COMMONS_COLLECTIONS + EASYMOCK + JUNIT
    compile.with project('ProgiCommerce:ATGDUST')
  end

The error is:

D:\dev\progicommerce\src>%JRUBY_HOME%\bin\jruby -S buildr
(in D:/dev/progicommerce/src, development)
D:/dev/progicommerce/src/buildfile:4 warning: already initialized constant VERSION D:/dev/progicommerce/src/buildfile:7 warning: already initialized constant VERSION
Building ProgiCommerce
Compiling ProgiCommerce:ATGDUST into D:/dev/progicommerce/src/ATGDUST/target/classes

...

11 warnings
Compiling ProgiCommerce:ATFramework into D:/dev/progicommerce/src/ATFramework/target/classes D:\dev\progicommerce\src\ATFramework\src\main\java\com\progiweb\testing\repository\AutoInitializingGSA.java:10: cannot find symbol
symbol  : class InitializingGSA
location: package atg.adapter.gsa
import atg.adapter.gsa.InitializingGSA;
                      ^

...

44 errors
2 warnings
Buildr aborted!
?[31mRuntimeError : Failed to compile, see errors above?[0m

I confirmed by adding --trace that the ATGDUST/target/classes directory does not appear in the compilation classpath of the ATFramework project.


I can successfully compile both projects I change the definition of the ATFramework project to:

define 'ATFramework' do
compile.dependencies = ATG_DAS + ATG_DPS + ATG_DSS + ATG_DCS + COMMONS_LANG + COMMONS_COLLECTIONS + EASYMOCK + JUNIT compile.with project('ProgiCommerce:ATGDUST')._(:target, :main, :classes)
  end


I don't like it because I'm expressing a dependency in terms of physical files and not in terms of projects, but at this stage I cannot find a better way to do it. I feel however that I'm missing something and that Buildr looks flexible enough to achieve what I want, only I don't know how to do it. Any suggestion is appreciated.

Sebastiano

Reply via email to