[jsword-devel] big checkin

DM Smith dmsmith555 at yahoo.com
Thu Apr 29 06:31:09 MST 2004


I had played with the build and had a similar solution.
I used chaining of build files and copying of jar files.

W/ chaining bible desktop would build jsword before it built itself.
Jsword would build common before it built itself.

WRT copying:
The basic idea was that common/jar had all the jars that the project needed:
common/jar had all the jars it needed to build and to compile and had no 
external dependencies.
jsword/jar had all the jars it needed to build and to compile except for 
the jars that were in common. At the beginning of the build, jsword's 
build would copy the common jars to target/ant, including common.jar.
bibledesktop/jar likewise had all its needed jars except what was held 
by jsword/target/ant. So jsword/build.xml would have no stated 
dependency upon common, but only jsword.

One of the niceties of the solution was that I had removed dependencies 
on version numbers contained in jars. And since all the needed jars were 
in one location, the javac classpath was much simpler. Each project used 
its classfiles and the jars from the projects on which it depended.


I think I could easily add this to your changes, if you wish.

I did not get around to jsword-web. But I have a thought on how the 
build.xml should work. Have two more build files: deploy.xml and 
test.xml. The deploy.xml would have all the targets related to doing 
nightly and release deployments. Test.xml would have all the targets 
like cpd, checkstyle, javanss (or whatever they were called). In 
build.xml there would be targets for these build files which would 
merely be an <ant> target to them.

With this the build.xml would look very much like the other build files 
and the whole of it would be more understandable and supportable.

Joe Walker wrote:

> 
> The tricky thing is what to do with the jar files.
> The approach taken at the moment is that each project:
> - contains all the jars needed to build in the jar directory
>     - unless those jars are created by another jsword project
> - has a output target that creates a folder containing useful exports
>     - including jars depended on by created jars
> 
> Hence log4j.jar is only in common since all the other projects use the 
> log wrapper in common.
> However all projects export log4j.jar (having copied it from common) 
> since they need it to run.
> 
> I am tempted to make ant (and even eclipse) work off created jar files 
> copied into the project (so there is a copy of common.jar in jsword, and 
> a copy of jsword.jar and common.jar in bibledesktop)
> However I haven't because I think that would dislocate the projects too 
> much, forcing you to copy jars around too much, and breaking refactoring.
> 
> So I've separated the projects as much as a I could without making too 
> much extra work. At least this way the dependencies are fairly explicit.
> 
> I have not added and targets to build dependent projects yet.
> 
> Joe.
> 
> 
> DM Smith wrote:
> 
>> Thanks Joe.
>> I am back up and running. Your solution looks a lot like what I got to 
>> work. It is stripped of everything but what is needed to get the 
>> solution to work!
>>
>>
>> Joe Walker wrote:
>>
>>>
>>> Hi,
>>>
>>> Big check-in going on as we speak. The ant builds for common, jsword 
>>> and bibledesktop now work OK for me. Next the tough one - jsword-web.
>>>
>>> Joe.
>>
>>
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 
> 
> 
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 


More information about the jsword-devel mailing list