You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2021/08/25 02:46:40 UTC

[sling-org-apache-sling-app-cms] branch provisioning-support created (now 31641df)

This is an automated email from the ASF dual-hosted git repository.

dklco pushed a change to branch provisioning-support
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git.


      at 31641df  Working on generating a propvisioning model from a feature model. Current blocker is that the slingstart plugin expects the provisioning model files to exist up front

This branch includes the following new commits:

     new 31641df  Working on generating a propvisioning model from a feature model. Current blocker is that the slingstart plugin expects the provisioning model files to exist up front

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[sling-org-apache-sling-app-cms] 01/01: Working on generating a propvisioning model from a feature model. Current blocker is that the slingstart plugin expects the provisioning model files to exist up front

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch provisioning-support
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 31641dffd868f231b6a3259309028b1c4b329809
Author: Dan Klco <kl...@adobe.com>
AuthorDate: Tue Aug 24 22:46:21 2021 -0400

    Working on generating a propvisioning model from a feature model. Current blocker is that the slingstart plugin expects the provisioning model files to exist up front
---
 builder/pom.xml                                    | 157 +++++++++++++++++++++
 pom.xml                                            |   2 +
 provisioning/converter/pom.xml                     |  86 +++++++++++
 .../converter/ProvisioningModelConverter.java      |  94 ++++++++++++
 .../src/main/resources/META-INF/MANIFEST.MF        |   0
 provisioning/generator/pom.xml                     | 108 ++++++++++++++
 .../src/main/resources/provisioning/launchpad.txt  |  30 ++++
 provisioning/pom.xml                               |  23 +++
 8 files changed, 500 insertions(+)

diff --git a/builder/pom.xml b/builder/pom.xml
new file mode 100644
index 0000000..694a6a1
--- /dev/null
+++ b/builder/pom.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+        Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+        agreements. See the NOTICE file distributed with this work for additional information
+        regarding copyright ownership. The ASF licenses this file to you under the Apache License,
+        Version 2.0 (the "License"); you may not use this file except in compliance with the
+        License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+        Unless required by applicable law or agreed to in writing, software distributed under the
+        License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+        either express or implied. See the License for the specific language governing permissions
+        and limitations under the License.
+    -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>org.apache.sling.cms</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.5-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.apache.sling.cms.builder</artifactId>
+    <packaging>slingstart</packaging>
+
+    <name>Apache Sling - CMS Application Builder</name>
+
+    <properties>
+        <sling.java.version>8</sling.java.version>
+        <IT.expected.bundles.count>208</IT.expected.bundles.count>
+        <cms.version>${project.parent.version}</cms.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>ianal-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>verify-legal-files</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-clean-plugin</artifactId>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>${basedir}</directory>
+                            <includes>
+                                <include>derby.log</include>
+                                <include>cachedir/**</include>
+                                <include>sling/**</include>
+                                <include>jackrabbit/**</include>
+                                <include>coverage.ec</include>
+                            </includes>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>slingstart-maven-plugin</artifactId>
+                <extensions>true</extensions>
+                <executions>
+                    <execution>
+                        <id>start-container</id>
+                        <goals>
+                            <goal>start</goal>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <verbose>true</verbose>
+                    <createWebapp>false</createWebapp>
+                    <servers>
+                        <server>
+                            <port>${http.port}</port>
+                            <controlPort>${sling.control.port}</controlPort>
+                        </server>
+                    </servers>
+                    <usePomVariables>true</usePomVariables>
+                    <modelDirectory>${basedir}/../provisioning/generator/target/provisioning</modelDirectory>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>reserve-network-port</id>
+                        <goals>
+                            <goal>reserve-network-port</goal>
+                        </goals>
+                        <phase>process-resources</phase>
+                        <configuration>
+                            <portNames>
+                                <portName>http.port</portName>
+                                <portName>sling.control.port</portName>
+                            </portNames>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <systemPropertyVariables>
+                        <launchpad.http.port>${http.port}</launchpad.http.port>
+                        <IT.expected.bundles.count>${IT.expected.bundles.count}</IT.expected.bundles.count>
+                    </systemPropertyVariables>
+                </configuration>
+            </plugin>
+        </plugins>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <!-- Extend RAT configuration from parent pom -->
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <configuration>
+                        <excludes combine.children="append">
+                            <!-- Exclude sling instance -->
+                            <exclude>sling/**</exclude>
+                        </excludes>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.cms.feature</artifactId>
+            <version>${cms.version}</version>
+            <classifier>slingcms-standalone</classifier>
+            <type>slingosgifeature</type>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d12b544..b75ca2a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,6 +76,8 @@
         <module>ui</module>
         <module>reference</module>
         <module>feature</module>
+        <module>provisioning</module>
+        <module>builder</module>
         <module>archetype</module>
         <module>it</module>
     </modules>
diff --git a/provisioning/converter/pom.xml b/provisioning/converter/pom.xml
new file mode 100644
index 0000000..7744911
--- /dev/null
+++ b/provisioning/converter/pom.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under
+the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in
+writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the
+License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>org.apache.sling.cms</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.5-SNAPSHOT</version>
+    </parent>
+    <artifactId>org.apache.sling.cms.provisioning.converter</artifactId>
+    <name>Apache Sling - Provisioning Model - Converter</name>
+    <description>Maven plugin for converting the CMS Sling Feature Model to the Provisioning Model</description>
+    <packaging>maven-plugin</packaging>
+
+    <properties>
+        <maven.version>3.0</maven.version>
+        <bnd.baseline.skip>true</bnd.baseline.skip>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <!-- Used by maven-remote-resources-plugin -->
+                        <exclude>**/*.MF</exclude>
+                        <exclude>target/*</exclude>
+                        <exclude>**/target/*</exclude>
+                        <exclude>**/target/**/*</exclude>
+
+                    </excludes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>3.2.0</version>
+                <configuration>
+                    <archive>
+                        <manifestFile />
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>slingstart-maven-plugin</artifactId>
+            <version>1.9.12</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.json</groupId>
+            <artifactId>javax.json-api</artifactId>
+            <version>1.1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.json</artifactId>
+            <version>1.1.4</version>
+        </dependency>
+
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/provisioning/converter/src/main/java/org/apache/sling/cms/privisioning/converter/ProvisioningModelConverter.java b/provisioning/converter/src/main/java/org/apache/sling/cms/privisioning/converter/ProvisioningModelConverter.java
new file mode 100644
index 0000000..89d6f3e
--- /dev/null
+++ b/provisioning/converter/src/main/java/org/apache/sling/cms/privisioning/converter/ProvisioningModelConverter.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cms.feature;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.io.json.FeatureJSONReader;
+import org.apache.sling.feature.modelconverter.FeatureToProvisioning;
+import org.apache.sling.maven.slingstart.ModelUtils;
+
+@Mojo(name = "fm-to-pm", defaultPhase = LifecyclePhase.COMPILE, requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true)
+public class ProvisioningModelConverter extends AbstractMojo {
+
+    @Component
+    private MavenSession session;
+
+    @Component
+    private MavenProject project;
+
+    @Component
+    private ArtifactHandlerManager artifactHandlerManager;
+
+    @Component
+    private ArtifactResolver artifactResolver;
+
+    @Parameter
+    private File featureModel;
+
+    @Parameter
+    private File outputFile;
+
+    public Feature getFeature(ArtifactId artifact) {
+        getLog().debug("Resolving artifact: "+ artifact.toString());
+        try {
+            File file = ModelUtils.getArtifact(project, session, artifactHandlerManager, artifactResolver,
+                    artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
+                    artifact.getClassifier()).getFile();
+            try (Reader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)) {
+                return FeatureJSONReader.read(reader, file.toURI().toURL().toString());
+            }
+        } catch (Exception ex) {
+            throw new RuntimeException("Failed to get artifact " + artifact, ex);
+        }
+    }
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (!featureModel.exists()) {
+            throw new MojoExecutionException("Input file " + featureModel + " not found");
+        } else {
+            getLog().info("Reading feature model from: "+ featureModel.getAbsolutePath());
+        }
+        if(!outputFile.getParentFile().exists()){
+            getLog().info("Creating output directory: "+ outputFile.getParentFile().getAbsolutePath());
+            outputFile.getParentFile().mkdirs();
+        }
+        getLog().info("Writing provisioning model to: "+ outputFile.getAbsolutePath());
+
+        FeatureToProvisioning.convert(featureModel, outputFile, artifact -> getFeature(artifact));
+    }
+
+}
diff --git a/provisioning/converter/src/main/resources/META-INF/MANIFEST.MF b/provisioning/converter/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e69de29
diff --git a/provisioning/generator/pom.xml b/provisioning/generator/pom.xml
new file mode 100644
index 0000000..faf4aad
--- /dev/null
+++ b/provisioning/generator/pom.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+        Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+        agreements. See the NOTICE file distributed with this work for additional information
+        regarding copyright ownership. The ASF licenses this file to you under the Apache License,
+        Version 2.0 (the "License"); you may not use this file except in compliance with the
+        License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+        Unless required by applicable law or agreed to in writing, software distributed under the
+        License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+        either express or implied. See the License for the specific language governing permissions
+        and limitations under the License.
+    -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>org.apache.sling.cms</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.5-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.apache.sling.cms.provisioning.generator</artifactId>
+    <packaging>pom</packaging>
+
+    <name>Apache Sling - Provisioning Model - Generator</name>
+
+    <properties>
+        <cms.version>${project.parent.version}</cms.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.2.0</version>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/feature</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>false</overWriteSnapshots>
+                            <overWriteIfNewer>true</overWriteIfNewer>
+                            <scope>compile</scope>
+                            <includeArtifactIds>org.apache.sling.cms.feature</includeArtifactIds>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.cms.provisioning.converter</artifactId>
+                <version>${project.parent.version}</version>
+                <executions>
+                    <execution>
+                        <id>fm-to-pm</id>
+                        <goals>
+                            <goal>fm-to-pm</goal>
+                        </goals>
+                        <configuration>
+                            <featureModel>${project.build.directory}/feature/org.apache.sling.cms.feature-${project.parent.version}-slingcms-standalone.slingosgifeature</featureModel>
+                            <outputFile>${project.build.directory}/provisioning/model.txt</outputFile>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.2.0</version>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>${project.build.directory}/provisioning/model.txt</file>
+                                    <type>txt</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.cms.feature</artifactId>
+            <version>${cms.version}</version>
+            <classifier>slingcms-standalone</classifier>
+            <type>slingosgifeature</type>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/provisioning/generator/src/main/resources/provisioning/launchpad.txt b/provisioning/generator/src/main/resources/provisioning/launchpad.txt
new file mode 100644
index 0000000..3744892
--- /dev/null
+++ b/provisioning/generator/src/main/resources/provisioning/launchpad.txt
@@ -0,0 +1,30 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#
+# The :launchpad feature defines Sling's launchpad version
+# Only a single artifact is allowed within this feature.
+#
+[feature name=:launchpad]
+    org.apache.sling/org.apache.sling.launchpad.base/6.0.2-2.6.36
+
+[settings]
+  org.osgi.framework.system.packages=org.osgi.framework;version="1.9",org.osgi.framework.dto;version="1.8";uses:="org.osgi.dto",org.osgi.framework.hooks.bundle;version="1.1";uses:="org.osgi.framework",org.osgi.framework.hooks.resolver;version="1.0";uses:="org.osgi.framework.wiring",org.osgi.framework.hooks.service;version="1.1";uses:="org.osgi.framework",org.osgi.framework.hooks.weaving;version="1.1";uses:="org.osgi.framework.wiring",org.osgi.framework.launch;version="1.2";uses:="org.osg [...]
+  sling.jre-1.8=,java.applet;version="{dollar}{felix.detect.java.version}",java.awt;version="{dollar}{felix.detect.java.version}",java.awt.color;version="{dollar}{felix.detect.java.version}",java.awt.datatransfer;version="{dollar}{felix.detect.java.version}",java.awt.dnd;version="{dollar}{felix.detect.java.version}",java.awt.event;version="{dollar}{felix.detect.java.version}",java.awt.font;version="{dollar}{felix.detect.java.version}",java.awt.geom;version="{dollar}{felix.detect.java.ver [...]
+  sling.jre-jpms={dollar}{felix.jpms.java.base}{dollar}{felix.jpms.java.compiler}{dollar}{felix.jpms.java.datatransfer}{dollar}{felix.jpms.java.desktop}{dollar}{felix.jpms.java.instrument}{dollar}{felix.jpms.java.logging}{dollar}{felix.jpms.java.management}{dollar}{felix.jpms.java.management.rmi}{dollar}{felix.jpms.java.naming}{dollar}{felix.jpms.java.net.http}{dollar}{felix.jpms.java.prefs}{dollar}{felix.jpms.java.rmi}{dollar}{felix.jpms.java.scripting}{dollar}{felix.jpms.java.se}{dolla [...]
+  sling.jre.java.xml=,javax.xml;version="2.1.0",javax.xml.datatype;uses:="javax.xml.namespace";version="2.1.0",javax.xml.namespace;version="2.1.0",javax.xml.parsers;uses:="javax.xml.validation,org.w3c.dom,org.xml.sax,org.xml.sax.helpers";version="2.1.0",javax.xml.stream;uses:="javax.xml.namespace,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform";version="1.0.0",javax.xml.stream.events;uses:="javax.xml.namespace,javax.xml.stream";version="1.0.0",javax.xml.stream.util;uses [...]
+  sling.jpms.java.xml={dollar}{sling.jre.java.xml},javax.xml.catalog;uses:="javax.xml.namespace";version="1.0.0"
\ No newline at end of file
diff --git a/provisioning/pom.xml b/provisioning/pom.xml
new file mode 100644
index 0000000..9f65c49
--- /dev/null
+++ b/provisioning/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under
+the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in
+writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the
+License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>org.apache.sling.cms</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.5-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.apache.sling.cms.provisioning</artifactId>
+    <name>Apache Sling - Provisioning Model</name>
+    <description>Supports converting the feature model to the provisioning model</description>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>converter</module>
+        <module>generator</module>
+    </modules>
+</project>
\ No newline at end of file