blob: 477df18290a0def1fecdf3e3e20560e7a49890ce [file] [log] [blame]
<?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>
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
<version>47</version>
<relativePath />
</parent>
<artifactId>org.apache.sling.starter</artifactId>
<version>13-SNAPSHOT</version>
<name>Apache Sling Starter</name>
<description>
The Sling Starter demo application.
</description>
<scm>
<connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter.git</connection>
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter.git</developerConnection>
<url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-starter.git</url>
<tag>HEAD</tag>
</scm>
<properties>
<sling.java.version>8</sling.java.version>
<starter.min.bundles.count>126</starter.min.bundles.count>
<!-- versions to be replaced in the feature files -->
<asm.version>9.2</asm.version>
<jackrabbit.version>2.20.4</jackrabbit.version>
<oak.version>1.42.0</oak.version>
<slf4j.version>1.7.36</slf4j.version>
<composum.nodes.version>4.1.1</composum.nodes.version>
<jackson.version>2.13.1</jackson.version>
<groovy.version>3.0.9</groovy.version>
<!-- skip index generation for all builds except for CI and release -->
<bnd.index.generation.skip>true</bnd.index.generation.skip>
<docker.skip>true</docker.skip>
<docker.label>snapshot</docker.label>
<mongo.container.image>mongo:4.4.6</mongo.container.image>
<it.startTimeoutSeconds>60</it.startTimeoutSeconds>
<!-- used for reproducible builds (https://maven.apache.org/guides/mini/guide-reproducible-builds.htm), automatically updated during release -->
<project.build.outputTimestamp>1647263109</project.build.outputTimestamp>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>${basedir}</directory>
<includes>
<include>sling/**</include>
<include>coverage.ec</include>
<include>launcher/**</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>slingfeature-maven-plugin</artifactId>
<version>1.6.6</version>
<extensions>true</extensions>
<configuration>
<replacePropertyVariables>asm.version,jackrabbit.version,groovy.version,oak.version,slf4j.version,composum.nodes.version,jackson.version</replacePropertyVariables>
<aggregates>
<aggregate>
<classifier>oak_tar</classifier>
<filesInclude>*.json</filesInclude>
<filesInclude>oak/*.json</filesInclude>
<filesInclude>oak/persistence/oak_persistence_sns.json</filesInclude>
<filesInclude>app/*.json</filesInclude>
<title>Sling With Oak Segment NS Persistence</title>
</aggregate>
<aggregate>
<classifier>oak_mongo</classifier>
<filesInclude>*.json</filesInclude>
<filesInclude>oak/*.json</filesInclude>
<filesInclude>oak/persistence/oak_persistence_mongods.json</filesInclude>
<filesInclude>app/*.json</filesInclude>
<title>Sling With Oak Document NS Mongo Persistence</title>
</aggregate>
<aggregate>
<classifier>nosample_base</classifier>
<filesInclude>*.json</filesInclude>
<filesInclude>oak/*.json</filesInclude>
<title>Sling With No Samples and No Persistence</title>
</aggregate>
<aggregate>
<classifier>oak_tar_test</classifier>
<filesInclude>*.json</filesInclude>
<filesInclude>oak/*.json</filesInclude>
<filesInclude>oak/persistence/oak_persistence_sns.json</filesInclude>
<filesInclude>app/*.json</filesInclude>
<filesInclude>test/*.json</filesInclude>
<title>Sling with Oak Segment NS persistence and test content</title>
</aggregate>
</aggregates>
<scans>
<scan>
<includeClassifier>oak_tar</includeClassifier>
<includeClassifier>oak_tar_test</includeClassifier>
<includeClassifier>oak_mongo</includeClassifier>
<includeClassifier>nosample_base</includeClassifier>
</scan>
</scans>
<archives>
<archive>
<classifier>oak_tar_far</classifier>
<includeClassifier>oak_tar</includeClassifier>
</archive>
<archive>
<classifier>oak_mongo_far</classifier>
<includeClassifier>oak_mongo</includeClassifier>
</archive>
</archives>
<repositories>
<repository>
<includeClassifier>oak_tar</includeClassifier>
<includeClassifier>oak_mongo</includeClassifier>
<includeClassifier>docker</includeClassifier>
</repository>
</repositories>
</configuration>
<executions>
<execution>
<id>aggregate-features</id>
<phase>prepare-package</phase>
<goals>
<goal>aggregate-features</goal>
<goal>analyse-features</goal>
<goal>attach-features</goal>
<goal>attach-featurearchives</goal>
</goals>
</execution>
<execution>
<id>create-repository</id>
<phase>package</phase>
<goals>
<goal>repository</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>prepare-feature-launcher</id>
<goals>
<goal>get</goal>
<goal>copy</goal>
</goals>
<phase>package</phase>
<configuration>
<!-- 1.1.28 and newer versions don't work out-of-the-box due to SLING-10956 -->
<artifact>org.apache.sling:org.apache.sling.feature.launcher:1.1.26</artifact>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<!-- generate bnd OSGi index (https://github.com/bndtools/bnd/tree/master/maven/bnd-indexer-maven-plugin) -->
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-indexer-maven-plugin</artifactId>
<version>6.2.0</version>
<executions>
<execution>
<id>index</id>
<goals>
<goal>index</goal>
</goals>
<configuration>
<scopes>provided</scopes>
<skip>${bnd.index.generation.skip}</skip>
</configuration>
</execution>
</executions>
</plugin>
<!-- reserve network ports for the integration tests -->
<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>pre-integration-test</phase>
<configuration>
<portNames>
<portName>http.port</portName>
<portName>http.port.mongo</portName>
<portName>mongo.port</portName>
</portNames>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target if="${docker.skip}">
<echo>WARNING: docker.skip is ${docker.skip}, Docker-based tests will not be executed.</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
<!--
Start a MongoDB container for the corresponding tests.
Must be declared before the feature-launcher-maven-plugin
so that the container is up before the corresponding Sling
instance starts.
-->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.39.0</version>
<configuration>
<skip>${docker.skip}</skip>
<images>
<image>
<alias>mongo</alias>
<name>${mongo.container.image}</name>
<run>
<ports>
<port>${mongo.port}:27017</port>
</ports>
<wait>
<log>CONTROL</log>
<time>60000</time>
</wait>
</run>
</image>
<image>
<name>apache/sling:${docker.label}</name>
<build>
<dockerFile>Dockerfile</dockerFile>
<contextDir>${project.basedir}</contextDir>
</build>
</image>
</images>
<stopMode>kill</stopMode>
</configuration>
<executions>
<execution>
<id>start-mongo</id>
<!-- must run prior feature-launcher-maven-plugin:start -->
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-mongo</id>
<!-- must run after feature-launcher-maven-plugin:stop -->
<phase>verify</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
<execution>
<id>build-docker-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- launch the Sling instances to test -->
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>feature-launcher-maven-plugin</artifactId>
<version>0.1.2</version>
<configuration>
<launches>
<launch>
<id>sling-starter-oak-tar</id>
<feature>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<classifier>oak_tar_test</classifier>
<type>slingosgifeature</type>
</feature>
<launcherArguments>
<frameworkProperties>
<org.osgi.service.http.port>${http.port}</org.osgi.service.http.port>
</frameworkProperties>
</launcherArguments>
<startTimeoutSeconds>${it.startTimeoutSeconds}</startTimeoutSeconds>
</launch>
<launch>
<id>sling-starter-oak-mongo</id>
<skip>${docker.skip}</skip>
<feature>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<classifier>oak_mongo</classifier>
<type>slingosgifeature</type>
</feature>
<launcherArguments>
<frameworkProperties>
<org.osgi.service.http.port>${http.port.mongo}</org.osgi.service.http.port>
</frameworkProperties>
</launcherArguments>
<environmentVariables>
<MONGODB_PORT>${mongo.port}</MONGODB_PORT>
</environmentVariables>
<startTimeoutSeconds>${it.startTimeoutSeconds}</startTimeoutSeconds>
</launch>
</launches>
</configuration>
<executions>
<execution>
<goals>
<goal>start</goal>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- run the ITs -->
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<dependenciesToScan>
<dependency>org.apache.sling:org.apache.sling.launchpad.integration-tests</dependency>
</dependenciesToScan>
<includes>
<include>**/*Test.java</include>
<include>**/*IT.java</include>
</includes>
<excludes>
<exclude>${failsafe.exclude}</exclude>
<!-- Don't run provisioning model ITs in the feature model context -->
<exclude>org/apache/sling/launchpad/webapp/integrationtest/provisioning/**.java</exclude>
</excludes>
<systemPropertyVariables>
<launchpad.http.server.url>http://localhost:${http.port}/</launchpad.http.server.url>
<starter.http.test.ports>false:${http.port},${docker.skip}:${http.port.mongo}</starter.http.test.ports>
<starter.min.bundles.count>${starter.min.bundles.count}</starter.min.bundles.count>
<!-- Comma-separated list of paths to check for 200 status (added for SLING-10402) -->
<starter.check.paths>
/slingshot/users/slingshot1/travel/home/images/home.jpg,
/slingshot/resources/images/background.jpg,
/slingshot/users/slingshot2/places/landing/images/landing.jpg,
/starter.html,
/bin/browser.html,
/system/console/bundles,
</starter.check.paths>
</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>
<exclude>launcher/**</exclude>
</excludes>
</configuration>
</plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-antrun-plugin
</artifactId>
<versionRange>
[3.0.0,)
</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.utils</artifactId>
<version>1.11.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad.integration-tests</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<!-- provided-scope dependency of the commons.johnzon bundle -->
<dependency>
<groupId>org.apache.johnzon</groupId>
<artifactId>johnzon-core</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<!-- enabled during release builds -->
<id>apache-release</id>
<properties>
<bnd.index.generation.skip>false</bnd.index.generation.skip>
</properties>
</profile>
<profile>
<id>ci</id>
<!-- enabled during ci builds -->
<activation>
<property>
<name>ci</name>
</property>
</activation>
<properties>
<bnd.index.generation.skip>false</bnd.index.generation.skip>
<docker.skip>false</docker.skip>
</properties>
<!-- workaround for https://github.com/bndtools/bnd/issues/5247 -->
<repositories>
<repository>
<id>Nexus</id>
<name>Nexus</name>
<url>https://repository.apache.org/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
</profile>
</profiles>
</project>