Author: cziegeler
Date: Thu Apr 30 14:06:52 2015
New Revision: 1676994

URL: http://svn.apache.org/r1676994
Log:
Add section about maven plugin and :remove feature

Modified:
    sling/site/trunk/content/documentation/development/slingstart.mdtext

Modified: sling/site/trunk/content/documentation/development/slingstart.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/development/slingstart.mdtext?rev=1676994&r1=1676993&r2=1676994&view=diff
==============================================================================
--- sling/site/trunk/content/documentation/development/slingstart.mdtext 
(original)
+++ sling/site/trunk/content/documentation/development/slingstart.mdtext Thu 
Apr 30 14:06:52 2015
@@ -159,5 +159,51 @@ While the default configuration form is
     com.acme.xyz [format=properties]    
         ftp.port = 21
         
-Notice that this model only supports string properties. Therefore the service 
consuming the configuration needs to be able to adapt a string value to the 
correct type.
+Notice that this definition only supports string properties. Therefore the 
service consuming the configuration needs to be able to adapt a string value to 
the correct type.
 
+## Slingstart and Slingfeature projects
+
+The slingstart Maven plugin introduces two new packaging types:
+
+* slingstart : This type requires a model at src/main/provisioning. It reads 
all text files in that directory and merges them in alphabetical order. The 
resulting artifact is a runnable jar. The assembled model is also attached to 
the project artifacts.
+* slingfeature : This type requires a model at src/main/provisioning. It reads 
all text files in that directory and merges them in alphabetical order and 
creates a merged model which is the final artifact of this project.
+
+A model can reference other slingstart or slingfeature artifacts. When such an 
artifact is reference, the type needs to be specified, for example:
+
+   [artifacts]
+       org.apache.sling/org.apache.sling.launchpad/8-SNAPSHOT/slingstart
+       
org.apache.sling/org.apache.sling.launchpad.test-bundles/0.0.1-SNAPSHOT/slingfeature
+
+The resulting model is a merged model, starting with the dependencies and then 
merging in the current model.
+
+### Model Merging
+
+Two models are merged feature by feature - each feature is treated as a 
separate unit. Within a feature each run mode is treated separately as well. 
Within a run mode a model can overwrite definitions from the base model. For 
example, it can define a different configuration or a different version and/or 
start level for an artifact.
+In addition, it can also remove artifacts and configurations. For this the 
special runmode :remove needs to be used together with all run modes the 
artifact or configuration is currently in.
+
+Let's look at an example base model
+
+   [artifacts]
+       my/special/artifact/1.0.0
+       commons/library/1.0.0
+       
+   [artifacts runModes=test]
+       another/one/2.1.0
+
+Now, another model wants to use the above model as it's base but:
+
+* Change the version of the commons library to 1.1.0 and move it to a 
different start level.
+* Remove the "special artifact"
+* Remove the "another one"
+
+The changing model would mention the above as one artifact and in addition 
have:
+    [artifacts startLevel=5]
+        commons/library/1.1.0
+    
+    [artifacts runModes=:remove]
+        my/special/artifact/0.0.0
+    
+    [artifacts runModes=:remove,test]
+        another/one/0.0.0
+
+Note that the version for removal does not play a role, it's not compared for 
an exact match. Configurations can be removed in the same way by just 
specifying their PID in the :remove run mode.


Reply via email to