Jar
Builder
After building the class files,
it's common to collect them into
a Java archive (.jar) file,
which you do by calling the Jar
Builder method.
If you want to just collect all of the
class files within a subdirectory,
you can just specify that subdirectory
as the Jar
source:
Java(target = 'classes', source = 'src') Jar(target = 'test.jar', source = 'classes')
SCons will then pass that directory to the jar command, which will collect all of the underlying .class files:
% scons -Q javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java jar cf test.jar classes
If you want to keep all of the
.class files
for multiple programs in one location,
and only archive some of them in
each .jar file,
you can pass the Jar
builder a
list of files as its source.
It's extremely simple to create multiple
.jar files this way,
using the lists of target class files created
by calls to the Java
builder
as sources to the various Jar
calls:
prog1_class_files = Java(target = 'classes', source = 'prog1') prog2_class_files = Java(target = 'classes', source = 'prog2') Jar(target = 'prog1.jar', source = prog1_class_files) Jar(target = 'prog2.jar', source = prog2_class_files)
This will then create prog1.jar and prog2.jar next to the subdirectories that contain their .java files:
% scons -Q javac -d classes -sourcepath prog1 prog1/Example1.java prog1/Example2.java javac -d classes -sourcepath prog2 prog2/Example3.java prog2/Example4.java jar cf prog1.jar -C classes Example1.class -C classes Example2.class jar cf prog2.jar -C classes Example3.class -C classes Example4.class