blob: 3f2c416c27e946f46027a4cd9b3217b56e39214d [file] [log] [blame]
<?xml version="1.0"?><!--
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 https://maven.apache.org/xsd/maven-4.0.0.xsd" child.project.url.inherit.append.path="false">
<modelVersion>4.0.0</modelVersion>
<!-- ====================================================================== -->
<!-- P A R E N T P R O J E C T D E S C R I P T I O N -->
<!-- ====================================================================== -->
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>27</version>
<relativePath />
</parent>
<!-- ====================================================================== -->
<!-- P R O J E C T D E S C R I P T I O N -->
<!-- ====================================================================== -->
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>parent</artifactId>
<version>3.6.4</version>
<packaging>pom</packaging>
<name>Apache Jackrabbit FileVault (Parent Project)</name>
<description>
The FileVault introduces a JCR repository to filesystem mapping. The mapping
is exposed by an API and used by the "FileVault Content Packages" which allow to
create portable packages of repository content.
The Vault Command Line Interface aka "vlt" provides a subversion like
utility to work and develop with repository content.
Apache Jackrabbit FileVault is a project of the Apache Software Foundation.
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jackrabbit.version>2.20.6</jackrabbit.version>
<oak.version>1.42.0</oak.version>
<slf4j.version>1.7.25</slf4j.version>
<test.oak>true</test.oak> <!-- passed to integration test as property "oak", set to true to test with Oak, false means test with Jackrabbit 2 -->
<bnd.version>6.3.1</bnd.version>
<minimalMavenBuildVersion>3.6.1</minimalMavenBuildVersion><!-- due to https://issues.apache.org/jira/browse/MNG-6059 -->
<minimalJavaBuildVersion>11</minimalJavaBuildVersion>
<maven.compiler.release>8</maven.compiler.release>
<surefire.version>3.0.0-M7</surefire.version>
<sling.url>http://localhost:4502</sling.url>
<jacoco.command /><!-- is overwritten by https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html -->
<project.build.outputTimestamp>2022-09-16T09:25:10Z</project.build.outputTimestamp>
</properties>
<!-- ====================================================================== -->
<!-- S C M D E F I N I T I O N -->
<!-- ====================================================================== -->
<!-- using adjusted inheritance rules: https://issues.apache.org/jira/browse/MNG-6059 -->
<scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false" child.scm.url.inherit.append.path="false">
<connection>scm:git:https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git</connection>
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git</developerConnection>
<url>https://github.com/apache/jackrabbit-filevault/tree/${project.scm.tag}</url>
<tag>jackrabbit-filevault-3.6.4</tag>
</scm>
<!-- ====================================================================== -->
<!-- P R O J E C T I N F O -->
<!-- ====================================================================== -->
<mailingLists>
<mailingList>
<name>Jackrabbit Developer List</name>
<subscribe>dev-subscribe@jackrabbit.apache.org</subscribe>
<unsubscribe>dev-unsubscribe@jackrabbit.apache.org</unsubscribe>
<post>mailto:dev@jackrabbit.apache.org</post>
<archive>https://lists.apache.org/list.html?dev@jackrabbit.apache.org</archive>
</mailingList>
<mailingList>
<name>Jackrabbit User List</name>
<subscribe>users-subscribe@jackrabbit.apache.org</subscribe>
<unsubscribe>users-unsubscribe@jackrabbit.apache.org</unsubscribe>
<post>mailto:users@jackrabbit.apache.org</post>
<archive>https://lists.apache.org/list.html?users@jackrabbit.apache.org</archive>
</mailingList>
</mailingLists>
<issueManagement>
<system>JIRA</system>
<url>https://issues.apache.org/jira/browse/JCRVLT</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
<url>https://ci-builds.apache.org/blue/organizations/jenkins/Jackrabbit%2Ffilevault/activity</url>
</ciManagement>
<url>https://jackrabbit.apache.org/filevault/</url>
<!-- ====================================================================== -->
<!-- B U I L D D E F I N I T I O N -->
<!-- ====================================================================== -->
<build>
<pluginManagement>
<plugins>
<!-- ====================================================================== -->
<!-- S L I N G P L U G I N -->
<!-- ====================================================================== -->
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>sling-maven-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<!-- slingUrl dynamically set by property -->
<slingUrlSuffix>/system/console</slingUrlSuffix>
<deploymentMethod>WebConsole</deploymentMethod>
</configuration>
</plugin>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<version>${bnd.version}</version>
<executions>
<execution>
<id>generate-osgi-metadata</id>
<goals>
<goal>bnd-process</goal>
</goals>
<configuration>
<bnd><![CDATA[
# we cannot let bnd-maven-plugin generate it automatically, as Maven applies some inheritance logic
Bundle-DocURL: https://jackrabbit.apache.org/filevault/
Bundle-Category: jackrabbit
# https://github.com/bndtools/bnd/tree/master/maven/bnd-maven-plugin#reproducible-builds
-noextraheaders: true
-snapshot: SNAPSHOT
# export all versioned packages except for conditional ones (https://github.com/bndtools/bnd/issues/3721#issuecomment-579026778)
-exportcontents: ${removeall;${packages;VERSIONED};${packages;CONDITIONAL}}
# support only DS 1.4 (https://github.com/bndtools/bnd/pull/3121/files)
-dsannotations-options: version;maximum=1.4.0
# generate error (instead of warning) when exported package uses private (non-exported) reference
-fixupmessages:"Export *, has \\d+, private references"; \
restrict:=warning; \
is:=error
]]></bnd>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-baseline-maven-plugin</artifactId>
<version>${bnd.version}</version>
<configuration>
<includeDistributionManagement>false</includeDistributionManagement>
<fullReport>true</fullReport>
<diffignores>
<!-- ignore Bundle-Version header for baseline, i.e. no enforcement of specific bundle versions -->
<diffignore>Bundle-Version</diffignore>
</diffignores>
</configuration>
<executions>
<execution>
<id>baseline</id>
<goals>
<goal>baseline</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-resolver-maven-plugin</artifactId>
<version>${bnd.version}</version>
<executions>
<execution>
<goals>
<goal>resolve</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
<configuration>
<useMavenDependencies>true</useMavenDependencies>
<!-- also include compile scoped dependencies (https://github.com/bndtools/bnd/blob/38ef85e389678370304846d6b09ffd31f9efb87d/biz.aQute.bnd.maven/src/aQute/bnd/maven/lib/resolve/Scope.java#L13), compare with https://github.com/bndtools/bnd/issues/4207 -->
<scopes>compile</scopes>
<failOnChanges>false</failOnChanges><!-- reuse for multiple bundles which all require different minimum container -->
<writeOnChanges>false</writeOnChanges>
</configuration>
</plugin>
<!-- ====================================================================== -->
<!-- S U R E F I R E P L U G I N -->
<!-- ====================================================================== -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<!-- put derby.log (created for Jackrabbit based ITs below target instead of the current directory) -->
<derby.stream.error.file>target/derby.log</derby.stream.error.file>
<oak>${test.oak}</oak>
</systemPropertyVariables>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<!-- ====================================================================== -->
<!-- R E L E A S E P L U G I N -->
<!-- ====================================================================== -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<projectVersionPolicyId>OddEvenVersionPolicy</projectVersionPolicyId>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.release</groupId>
<artifactId>maven-release-oddeven-policy</artifactId>
<version>3.0.0-M6</version>
</dependency>
</dependencies>
</plugin>
<!-- ====================================================================== -->
<!-- R A T P L U G I N -->
<!-- ====================================================================== -->
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
<excludes>.asf.yaml</excludes>
<excludes>.ratignore</excludes>
<exclude>release.properties</exclude>
<exclude>.git/**</exclude>
<exclude>.idea/**</exclude>
<exclude>.gitattributes</exclude>
<exclude>.gitignore</exclude>
<exclude>derby.log</exclude>
<exclude>**/*.zip/**</exclude>
<exclude>.mvn/**</exclude>
<exclude>.no-defender.sh</exclude>
<exclude>.repository/**</exclude>
<exclude>local-snapshots-dir/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- ====================================================================== -->
<!-- S I T E P L U G I N -->
<!-- ====================================================================== -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<configuration>
<skip>true</skip><!-- skip for all modules where not explicitly enabled -->
<skipDeploy>true</skipDeploy><!-- always deploy via maven-scm-publish-plugin -->
<relativizeDecorationLinks>false</relativizeDecorationLinks><!-- leave absolute URLs untouched: https://maven.apache.org/plugins/maven-site-plugin/site-mojo.html#relativizeDecorationLinks -->
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>7.2.0</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<configuration>
<failBuildOnAnyVulnerability>true</failBuildOnAnyVulnerability>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<consoleOutput>true</consoleOutput>
</configuration>
</execution>
</executions>
</plugin>
<!-- compiler stuff -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>true</debug>
<showDeprecation>false</showDeprecation>
<showWarnings>true</showWarnings>
<optimize>false</optimize>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>maven-enforcer-rules</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>enforce-explicit-scope</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireExplicitDependencyScope implementation="org.apache.sling.maven.enforcer.RequireExplicitDependencyScope" />
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- ====================================================================== -->
<!-- R E P O R T I N G -->
<!-- ====================================================================== -->
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<!--avoid child modules from inheriting anything from the apache parent pom -->
<inherited>false</inherited>
</plugin>
</plugins>
</reporting>
<!-- ====================================================================== -->
<!-- D E P E N D E N C Y M A N A G E M E N T -->
<!-- ====================================================================== -->
<dependencyManagement>
<dependencies>
<!-- jackrabbit -->
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>oak-jackrabbit-api</artifactId>
<version>${oak.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-spi</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-commons</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-spi-commons</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr2spi</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-client</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-spi2dav</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-webdav</artifactId>
<version>${jackrabbit.version}</version>
</dependency>
<!-- JCR Stuff -->
<dependency>
<groupId>javax.jcr</groupId>
<artifactId>jcr</artifactId>
<version>2.0</version>
</dependency>
<!-- SLF4j / Log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- https://github.com/JetBrains/java-annotations -->
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>23.0.0</version>
</dependency>
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bnd.annotation</artifactId>
<version>${bnd.version}</version>
</dependency>
<!-- other -->
<!-- OSGi -->
<!-- OSGi framework 1.8, Core R6 (https://osgi.org/javadoc/r6/core/org/osgi/framework/package-summary.html) -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.framework</artifactId>
<version>1.8.0</version>
</dependency>
<!-- Configuration Admin 1.6, Compendium R7 (https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/cm/package-frame.html) -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.cm</artifactId>
<version>1.6.0</version>
</dependency>
<!-- Service Component 1.4, Compendium R7 (https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/component/package-frame.html) -->
<!-- and component property types (https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/component/propertytypes/package-frame.html) -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.component</artifactId>
<version>1.4.0</version>
</dependency>
<!-- Event Admin 1.3.1, Compendium R6 (https://osgi.org/javadoc/r6/cmpn/org/osgi/service/event/package-summary.html) -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.event</artifactId>
<version>1.3.1</version>
</dependency>
<!-- OSGi Annotations: @Version -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.annotation.versioning</artifactId>
<version>1.1.0</version>
</dependency>
<!-- Declarative Service Annotations -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.component.annotations</artifactId>
<version>1.4.0</version>
</dependency>
<!-- Metatype Annotations -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.metatype.annotations</artifactId>
<version>1.3.0</version>
</dependency>
<!-- these are minimum version referenced in OSGi bundles, for embedding a newer version should be used -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.8</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.8</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- ====================================================================== -->
<!-- P R O F I L E S -->
<!-- ====================================================================== -->
<profiles>
<profile>
<id>jacoco-report</id>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<propertyName>jacoco.command</propertyName>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-unit.exec</destFile>
</configuration>
</execution>
<execution>
<id>prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
<!-- potentially ITs fork Java again (e.g. for testing Maven plugins), therefore always append to destFile as multiple VMs would then write to the same file -->
<append>true</append>
</configuration>
</execution>
<execution>
<id>merge-unit-and-it</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>jacoco-unit.exec</include>
<include>jacoco-it.exec</include>
</includes>
</fileSet>
</fileSets>
</configuration>
</execution>
<execution>
<id>report-merged</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>@{jacoco.command}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<!--
for IT where you need a forked JVM to run the tests you can use this system property to make sure that
the JaCoCo agent correctly instruments your code
set system property also via argLine as only that allows late evaluation -->
<argLine>@{jacoco.command} -Djacoco.command=@{jacoco.command}</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dependency-check</id>
<build>
<plugins>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>