This project is the Feature Model based version of the sling-org-apache-sling-starter module and creates an executable JAR file (for now). It is also a test case for the Sling Kickstart Maven Plugin as it uses it to launch a Launchpad Ready Rule and Smoke tests. The Kickstart is using an embedded Sling Feature Archive to launch Sling and so the Kicstart can be started w/o having access to the internet.
This plugin depends on the Sling Kickstart Maven Plugin which is then used to run the IT tests:
mvn clean install
mvn clean install
This project contains a copy of the Sling Starter features models and uses the oak-tar configuration for its internal Sling 12 Feature Archive. To update you just need to copy all available feature models from the Sling Starter module and place it into the src/main/resources/features folder.
After the resulting jar file org.apache.sling.kickstart--.jar can be executed with:
java -jar org.apache.sling.kickstart--<version>.jar ...
The kickstart can be started in the background as a service with the ‘start’ command but the starter needs to be put into the background:
java -jar org.apache.sling.kickstart--<version>.jar start <optional options> &
The status of the service then can be retrieved by using the ‘status’ command:
java -jar org.apache.sling.kickstart--<version>.jar status
To shutdown the service use the ‘stop’ command:
java -jar org.apache.sling.kickstart--<version>.jar stop
If you project requires Sling Run Modes for Configuration purposes then you can provide them here with the Kickstart project by using the sling.run.modes property. Call it this way:
java -jar <kickstart jar file>.jar -Dsling.run.modes=mode1,mode2
The parameters of the Kickstarter is beside -af, -s are the same as the for the Sling Starater. To checkout the usage of the parameters you can use the help parameter when starting the kickstarter JAR file:
Usage: java -jar <Sling Kickstart JAR File> [-hmnSv] [-a=<address>] [-c=<slingHome>] [-f=<logFile>] [-j=<controlAddress>] [-l=<logLevel>] [-p=<port>] [-r=<contextPath>] [-s=<mainFeatureFile>] [-af=<additionalFeatureFile>]... [-D=<String=String>]... [-O=<overrides>]... [COMMAND] Apache Sling Kickstart [COMMAND] Optional Command for Server Instance Interaction, can be one of: 'start', 'stop', 'status' or 'threads' -a, --address=<address> the interface to bind to (use 0.0.0.0 for any) -af, --additionalFeature=<additionalFeatureFile> additional feature files -c, --slingHome=<slingHome> the sling context directory (default launcher) -D, --define=<String=String> sets property n to value v. Make sure to use this option *after* the jar filename. The JVM also has a -D option which has a different meaning -f, --logFile=<logFile> the log file, "-" for stdout (default logs/error.log) -h, --help Display the usage message. -j, --control=<controlAddress> host and port to use for control connection in the format '[host:]port' (default 127.0.0.1:0) -l, --logLevel=<logLevel> the initial loglevel (0..4, FATAL, ERROR, WARN, INFO, DEBUG) -m, --nofar Do not use Sling FAR (if no Main Feature was provided) and use FM instead -n, --noShutdownHook don't install the shutdown hook -O, --overrides=<overrides> Overrides in format <type>=<value>, type: C = artifact, CC = config, V = variable -p, --port=<port> the port to listen to (default 8080) -r, --context=<contextPath> the root servlet context path for the http service (default is /) -s, --mainFeature=<mainFeatureFile> main feature file (file path or URL) replacing the provided Sling Feature File -S, --nofm Do not use Sling Feature Archive or Model file -v, --verbose the feature launcher is verbose on launch Copyright(c) 2020 The Apache Software Foundation.
These are four additional parameters:
-s: this takes a path to a Feature Model (FM) that replaces the provided Sling Feature Module. With it it is possible to provide your own Sling FM which may or may not contain your own project FMs.
-af: each parameter will have a path to a Feature Model (FM) that is added to the provided Sling FM (or its override). To add multiple FMs just use multiple -af parameter lines.
-m/--nofar: do not use the embedded Sling Feature Archive and use the plain Sling Feature Model. This will greatly increase the launch performance if most of the dependencies are already in the local Maven repository.
-S/--nofm: do not use the embedded Sling Feature Archive or Model file. If no other Feature Module file is provided this launch aborts.
The Kickstart project also comes with the Feature Models and the scripts to run a Sling Composite Node Store as well having the option to upgrade a Sling instance afterwards. Note: keep in mind that these feature model files are not based on the latest Sling 12 feature models.
The Sling Feature Model of the Composite Node Store needs to have the Default Node Store removed which is available here: src/main/resources/feature-sling12-two-headed.json. Then we have to additional Feature Models:
There are two sets of two scripts available in the bin folder:
Note: the first two scripts support optionally additional features. Just add the path to the feature model file or feature archive as parameters to the script and they will be added when launched. It is important that both scripts get the same arguments, though. The last two scripts requires at least one additional feature as an update only makes sense when there is something to be updated.
./bin/create_seed_fm.sh my-project-fm.json another-project.json ./bin/run_composite_fm.sh my-project-fm.json another-project.json