{"id":17933426,"url":"https://github.com/apache/sling-org-apache-sling-kickstart","last_synced_at":"2025-08-21T07:40:00.821Z","repository":{"id":65979712,"uuid":"240235707","full_name":"apache/sling-org-apache-sling-kickstart","owner":"apache","description":"Apache Sling Kickstart Launcher","archived":false,"fork":false,"pushed_at":"2024-10-28T17:45:54.000Z","size":81149,"stargazers_count":3,"open_issues_count":1,"forks_count":3,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-10-28T18:59:19.209Z","etag":null,"topics":["java","maven","sling"],"latest_commit_sha":null,"homepage":"https://sling.apache.org/","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-02-13T10:39:38.000Z","updated_at":"2024-10-28T17:46:08.000Z","dependencies_parsed_at":"2023-10-13T08:31:16.914Z","dependency_job_id":null,"html_url":"https://github.com/apache/sling-org-apache-sling-kickstart","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fsling-org-apache-sling-kickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fsling-org-apache-sling-kickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fsling-org-apache-sling-kickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fsling-org-apache-sling-kickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/sling-org-apache-sling-kickstart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221941357,"owners_count":16905287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","maven","sling"],"created_at":"2024-10-28T21:40:02.641Z","updated_at":"2024-10-28T21:40:03.305Z","avatar_url":"https://github.com/apache.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Apache Sling](https://sling.apache.org/res/logos/sling.png)](https://sling.apache.org)\n\n\u0026#32;[![Build Status](https://ci-builds.apache.org/job/Sling/job/modules/job/sling-org-apache-sling-kickstart/job/master/badge/icon)](https://ci-builds.apache.org/job/Sling/job/modules/job/sling-org-apache-sling-kickstart/job/master/)\u0026#32;[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=apache_sling-org-apache-sling-kickstart\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=apache_sling-org-apache-sling-kickstart)\u0026#32;[![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=apache_sling-org-apache-sling-kickstart\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=apache_sling-org-apache-sling-kickstart)\u0026#32;[![JavaDoc](https://www.javadoc.io/badge/org.apache.sling/org.apache.sling.kickstart.svg)](https://www.javadoc.io/doc/org.apache.sling/org-apache-sling-kickstart)\u0026#32;[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.sling/org.apache.sling.kickstart/badge.svg)](https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.sling%22%20a%3A%22org.apache.sling.kickstart%22) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\n# Sling Kickstart Launcher\n\nThis project is the Feature Model based version of the **sling-org-apache-sling-starter**\nmodule and creates an executable JAR file (for now).\nIt is also a test case for the Sling Kickstart Maven Plugin as it uses it\nto launch a Launchpad Ready Rule and Smoke tests.\nThe Kickstart is using an embedded Sling Feature Archive to launch Sling and so the\nKicstart can be started w/o having access to the internet.\n\n## Build\n\nThis plugin depends on the **Sling Kickstart Maven Plugin** which is then used to run the IT tests:\n\n1. Go to **sling-kickstart-maven-plugin** module\n2. Build with: `mvn clean install`\n3. Go back to **sling-org-apache-sling-kickstart**\n4. Build and Launch it with: `mvn clean install`\n5. Sling will come up and run the IT tests and then shut down. Sling can be\n   kept running after the end of the IT tests by providing the property\n   **block.sling.at.the.end** with the value **true**\n\n## Update to the Latest Sling\n\nThis project contains a copy of the Sling Starter features models and uses the **oak-tar**\nconfiguration for its internal Sling 12 Feature Archive.\nTo update you just need to copy all available feature models from the Sling Starter module\nand place it into the **src/main/resources/features** folder.\n\n## Usage\n\nAfter the resulting jar file **org.apache.sling.kickstart--\u003cversion\u003e.jar**\ncan be executed with:\n```\njava -jar org.apache.sling.kickstart--\u003cversion\u003e.jar ...\n```\n\n### Running as a Service / Background\n\nThe kickstart can be started in the background as a service with the 'start'\ncommand but the starter needs to be put into the background:\n```\njava -jar org.apache.sling.kickstart--\u003cversion\u003e.jar start \u003coptional options\u003e \u0026\n```\n\nThe status of the service then can be retrieved by using the 'status' command:\n```\njava -jar org.apache.sling.kickstart--\u003cversion\u003e.jar status\n```\n\nTo shutdown the service use the 'stop' command:\n```\njava -jar org.apache.sling.kickstart--\u003cversion\u003e.jar stop\n```\n\n### Providing Sling Run Modes\n\nIf you project requires Sling Run Modes for Configuration purposes then\nyou can provide them here with the Kickstart project by using the\n**sling.run.modes** property. Call it this way:\n```bash\njava -jar \u003ckickstart jar file\u003e.jar -Dsling.run.modes=mode1,mode2\n```\n\n### Parameters\n\nThe parameters of the Kickstarter is beside **-af, -s** are the same as\nthe for the Sling Starater. To checkout the usage of the parameters you\ncan use the **help** parameter when starting the kickstarter JAR file:\n\n```\nUsage: java -jar \u003cSling Kickstart JAR File\u003e [-hmnSv] [-a=\u003caddress\u003e]\n                                            [-c=\u003cslingHome\u003e] [-f=\u003clogFile\u003e]\n                                            [-j=\u003ccontrolAddress\u003e]\n                                            [-l=\u003clogLevel\u003e] [-p=\u003cport\u003e]\n                                            [-r=\u003ccontextPath\u003e]\n                                            [-s=\u003cmainFeatureFile\u003e]\n                                            [-af=\u003cadditionalFeatureFile\u003e]...\n                                            [-D=\u003cString=String\u003e]...\n                                            [-O=\u003coverrides\u003e]... [COMMAND]\nApache Sling Kickstart\n      [COMMAND]             Optional Command for Server Instance Interaction, can be\n                              one of: 'start', 'stop', 'status' or 'threads'\n  -a, --address=\u003caddress\u003e   the interface to bind to (use 0.0.0.0 for any)\n      -af, --additionalFeature=\u003cadditionalFeatureFile\u003e\n                            additional feature files\n  -c, --slingHome=\u003cslingHome\u003e\n                            the sling context directory (default launcher)\n  -D, --define=\u003cString=String\u003e\n                            sets property n to value v. Make sure to use this option\n                              *after* the jar filename. The JVM also has a -D option\n                              which has a different meaning\n  -f, --logFile=\u003clogFile\u003e   the log file, \"-\" for stdout (default logs/error.log)\n  -h, --help                Display the usage message.\n  -j, --control=\u003ccontrolAddress\u003e\n                            host and port to use for control connection in the\n                              format '[host:]port' (default 127.0.0.1:0)\n  -l, --logLevel=\u003clogLevel\u003e the initial loglevel (0..4, FATAL, ERROR, WARN, INFO,\n                              DEBUG)\n  -m, --nofar               Do not use Sling FAR (if no Main Feature was provided)\n                              and use FM instead\n  -n, --noShutdownHook      don't install the shutdown hook\n  -O, --overrides=\u003coverrides\u003e\n                            Overrides in format \u003ctype\u003e=\u003cvalue\u003e, type: C = artifact,\n                              CC = config, V = variable\n  -p, --port=\u003cport\u003e         the port to listen to (default 8080)\n  -r, --context=\u003ccontextPath\u003e\n                            the root servlet context path for the http service\n                              (default is /)\n  -s, --mainFeature=\u003cmainFeatureFile\u003e\n                            main feature file (file path or URL) replacing the\n                              provided Sling Feature File\n  -S, --nofm                Do not use Sling Feature Archive or Model file\n  -v, --verbose             the feature launcher is verbose on launch\nCopyright(c) 2020 The Apache Software Foundation.\n```\n\nThese are four additional parameters:\n\n**-s**: this takes a path to a Feature Model (FM) that replaces the provided\nSling Feature Module. With it it is possible to provide your own Sling FM\nwhich may or may not contain your own project FMs.\n\n**-af**: each parameter will have a path to a Feature Model (FM) that is\nadded to the provided Sling FM (or its override). To add multiple FMs just\nuse multiple *-af* parameter lines.\n\n**-m/--nofar**: do not use the embedded Sling Feature Archive and use the\nplain Sling Feature Model. This will greatly increase the launch performance\nif most of the dependencies are already in the local Maven repository.\n\n**-S/--nofm**: do not use the embedded Sling Feature Archive or Model file.\nIf no other Feature Module file is provided this launch aborts.\n\n### Composite Node Store\n\nThe Kickstart project also comes with the Feature Models and the scripts to run\na Sling Composite Node Store as well having the option to upgrade a Sling instance\nafterwards.\n**Note**: keep in mind that these feature model files are not based on the latest\nSling 12 feature models.\n\n#### Feature Models\n\nThe Sling Feature Model of the Composite Node Store needs to have the Default Node\nStore removed which is available here: **src/main/resources/feature-sling12-two-headed.json**.\nThen we have to additional Feature Models:\n* feature-two-headed-seed.json: The setup to seed the initial **Libs** node store\nwhich will be later the **read-only** node store\n* feature-two-headed-runtime.json: This will create the Sling Instance with the composite\nnode store\n\n#### Scripts\n\nThere are two sets of two scripts available in the **bin** folder:\n\n* create_seed_fm.sh: creates the Seed Sling instance\n* run_composite_fm.sh: launches the Sling instance with a composite node store where **libs**\nis read-only\n* create_updated_seed_fm.sh: creates an update Seed Sling Instance\n* run_updated_composite_fm.sh: launches the Sling Instance with a composite node store\nwhich the updates available\n\n**Note**: the first two scripts support optionally additional features. Just add the path to the\nfeature model file or feature archive as parameters to the script and they will be added when\nlaunched. It is important that both scripts get the same arguments, though.\nThe last two scripts requires at least one additional feature as an update only makes sense\nwhen there is something to be updated.\n\nExample:\n```\n    ./bin/create_seed_fm.sh my-project-fm.json another-project.json\n    ./bin/run_composite_fm.sh my-project-fm.json another-project.json\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fsling-org-apache-sling-kickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fsling-org-apache-sling-kickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fsling-org-apache-sling-kickstart/lists"}