buildr-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <pe...@realityforge.org>
Subject Re: Compiling multiple projects with a small change
Date Sat, 16 Mar 2013 02:59:56 GMT
Hi,

On Wed, Mar 13, 2013 at 6:55 PM, Weyert de Boer <weyert@gmail.com> wrote:
> Now if I run this script I am having a few problems. First of all my
> generate_configuration_class gets run too early in the process and
> just before compilation time. Next, it also only executes the the last
> compile definition in my project definition. Can I also define
> projects and use a different project location? E.g. have a client1
> project which has its sources in a totally different location? If so I
> could define multiple projects and hard-code the source code to main
> source directory of the application. Or are there better approaches?

>From what I understand you are trying to build three different
artifacts, one customized for each client. We do this quite a bit with
java code but have never done it with flash (?) or whatever code type
you are using. There is a couple of strategies we have used in the
past. I don't know enough about flash to know if any of them are
appropriate.

* Extract out the common code into a different project and then have a
project  per client. Each client-specific project includes the shared
project and adds customisation for the client. ie pseudo code is

project 'foo' do
  project 'common' do
    package :jar
  end

  project 'client-1' do
    compile.with project('common')
    package(:jar).merge(project('common'))
  end

  project 'client-2' do
    compile.with project('common')
    package(:jar).merge(project('common'))
  end
end

* The other possibility is that you place all the code in one project
but produce multiple packages, each with other client code stripped
out. i.e.

project 'foo' do
  package(:jar, :classifier=>'client-1').exclude('/client-2/*)
  package(:jar, :classifier=>'client-2').exclude('/client-1/*)
end


* The other is to define multiple projects that share overlapping
source/resources.

project 'foo' do
  project 'client-1' do
    compile.from _('../common/src')
    package(:jar)
  end

  project 'client-2' do
    compile.from _('../common/src')
    package(:jar)
  end
end

HTH,

Peter Donald

Mime
View raw message