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