Building Knopflerfish
Knopflerfish includes an ant based build system for building a complete Knopflerfish distribution as well as building individual bundles. Ant 1.9.3 or later is required, available from ant.apache.orgKnopflerfish can be built either by checking out the entire source code , or by (re)building an installed distribution.
The top level build file is located in the osgi
directory. The default target is to build the framework and all
bundles in the bundles directory.
Invoking ant with the -p option will display the possible targets.
$ ant -p Buildfile: build.xml Main targets: all Builds the framework and all bundles including optional and test bundles bundle_doc Builds bundle specific docs bundle_tasks Builds and defines the Knopflerfish bundle tasks clean Removes all generated files and directories. clean_local Remove all bundles built by this build-file but keep all other bundles in the jars sub-directory. default Builds the framework and bundles in bundles-directory define_bundle_tasks Defines the Knopflerfish bundle tasks javadoc Create javadoc for all exported packages rebuild Cleans then build build all run (Re)start the framework. run-init Initial start with default set of bundles. run-kf-tests Builds then executes the KF testsuite. run-kf-tests-secure Builds then executes the KF testsuite with security enabled. run-secure (Re)start framework with security enabled. run-secure-init Initial start with security enabled and default set of bundles. Default target: default $
To add and build additional bundles see the programming section.
Building a compact Knopflerfish framework
You can build a compact version of the framework calledframework_compact.jar
. To build this you need to download
Proguard 5.2.
Install the proguard.jar file into ${KF_ROOT}/ant/lib and build
the framework with the property compact
set to
true
.
This a version with a reduced memory footprint. This version has
no security and certificate support compiled into it. This is only
supposed to be used for running and not to compile against. So you
also need to compile the normal framework.jar
to be able
to build bundles.
$ ant -Dcompact=true -f framework/build.xml Buildfile: /Users/jan/workspace_osgi/kf_osgi/osgi/framework/build.xml compile: compile_full: compile_compact: chkBundleTaskSrc: chkBundleTasksBuild: build_bundle_tasks: define_bundle_tasks: bundle_tasks: genexports: [delete] Deleting: /Users/jan/workspace_osgi/kf_osgi/osgi/framework/resources/exports jar: [delete] Deleting: /Users/jan/workspace_osgi/kf_osgi/osgi/framework/resources/version [delete] Deleting: /Users/jan/workspace_osgi/kf_osgi/osgi/framework/resources/tstamp writerelease: jar_file_full: jar_file_compact: [jar] Building jar: /Users/jan/workspace_osgi/kf_osgi/osgi/framework_compact.jar proguard_compact: [move] Moving 1 file to /Users/jan/workspace_osgi/kf_osgi/osgi [proguard] ProGuard, version 5.2 [proguard] Reading program jar [/Users/jan/workspace_osgi/kf_osgi/osgi/framework_compact.jar.tmp.jar] [proguard] Reading library jar [/Users/jan/workspace_osgi/kf_osgi/osgi/ee/ee.minimum.jar] [proguard] Preparing output jar [/Users/jan/workspace_osgi/kf_osgi/osgi/framework_compact.jar] [proguard] Copying resources from program jar [/Users/jan/workspace_osgi/kf_osgi/osgi/framework_compact.jar.tmp.jar] [delete] Deleting: /Users/jan/workspace_osgi/kf_osgi/osgi/framework_compact.jar.tmp.jar add_dex: source.jar: save_javadoc_data: javadoc.jar: all: BUILD SUCCESSFUL Total time: 14 seconds $ ls -l framework*jar -rw-r--r-- 1 jan staff 617250 16 Okt 10:44 framework.jar -rw-r--r-- 1 jan staff 323070 16 Okt 10:44 framework_compact.jar $