https://github.com/xwiki/xwiki-commons
Tip revision: 0cfc1b3397ce969321409dfc47730c703c330305 authored by Simon Urli on 29 January 2020, 10:11:53 UTC
[maven-release-plugin] prepare release xwiki-commons-12.0
[maven-release-plugin] prepare release xwiki-commons-12.0
Tip revision: 0cfc1b3
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-->
<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.xwiki.commons</groupId>
<artifactId>xwiki-commons</artifactId>
<version>12.0</version>
</parent>
<artifactId>xwiki-commons-pom</artifactId>
<name>XWiki Commons - Root POM</name>
<packaging>pom</packaging>
<properties>
<!-- By default legacy dependencies are forbidden -->
<xwiki.enforcer.no-legacy-dependencies.skip>${xwiki.enforcer.skip}</xwiki.enforcer.no-legacy-dependencies.skip>
<!-- By default we perform checks on the POM content -->
<xwiki.enforcer.valid-poms.skip>${xwiki.enforcer.skip}</xwiki.enforcer.valid-poms.skip>
<!-- By default don't skip Spoon checks -->
<xwiki.spoon.skip>false</xwiki.spoon.skip>
</properties>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<!-- TODO: At some point, we should turn on failing on warnings since they can be real errors and they keep
growing on our build logs and we need to start addressing them -->
<!--arg>-Werror</arg-->
<arg>-Xlint:all</arg>
<!-- Disable the javac warning when compiling for an older JVM. Note that this can result in class files
that do not work on the older platform since references to non-existent methods can get included.
However, it's hard to specify a generic location of the JRE that will work on all devs machines which
is why we're ignoring the warning (since we want warnings to fail the build...).
For more details, see:
- https://blogs.oracle.com/darcy/entry/bootclasspath_older_source
- http://stackoverflow.com/questions/9164625/maven-use-jdk-7-to-compile-for-jvm-5
-->
<arg>-Xlint:-options</arg>
<!-- Tell the compiler to preserve parameter names in the bytecode -->
<arg>-parameters</arg>
</compilerArgs>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<!-- Tell the compiler to preserve parameter names in the bytecode -->
<compilerArgument>-parameters</compilerArgument>
<testCompilerArgument>-parameters</testCompilerArgument>
</configuration>
</plugin>
<!-- We want to force packaging the license resources in the produced XWiki artifacts -->
<plugin>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-remote-resource-plugin</artifactId>
<version>12.0</version>
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-license-resources</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>xwiki-license-resources</id>
<goals>
<goal>process</goal>
</goals>
<configuration>
<projectsData>LICENSES</projectsData>
<resourceBundles>
<resourceBundle>org.xwiki.commons:xwiki-commons-tool-license-resources:${commons.version}</resourceBundle>
</resourceBundles>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-enforcer-dependencies</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>enforce-no-legacy-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<skip>${xwiki.enforcer.no-legacy-dependencies.skip}</skip>
<rules>
<xwikiBannedDependencies implementation="org.xwiki.tool.enforcer.XWikiBannedDependencies">
<searchTransitive>true</searchTransitive>
<message>Don't depend on a XWiki Legacy module!</message>
<excludes>
<exclude>.*xwiki.*:.*-legacy-.*</exclude>
</excludes>
</xwikiBannedDependencies>
</rules>
</configuration>
</execution>
<execution>
<id>enforce-valid-poms</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<skip>${xwiki.enforcer.valid-poms.skip}</skip>
<rules>
<externalExtensionCheck implementation="org.xwiki.tool.enforcer.ExternalExtensionCheck" />
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- Configure revapi to use a common configuration -->
<plugin>
<groupId>org.revapi</groupId>
<artifactId>revapi-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-verification-resources</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
<configuration>
<analysisConfigurationFiles>
<configurationFile>
<resource>revapi.json</resource>
</configurationFile>
</analysisConfigurationFiles>
</configuration>
</plugin>
<!-- Execute Spoon plugin -->
<plugin>
<groupId>fr.inria.gforge.spoon</groupId>
<artifactId>spoon-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>${xwiki.spoon.skip}</skip>
<!-- Don't fail in case of missing sources -->
<skipSpoonErrors>true</skipSpoonErrors>
<processors>
<processor>org.xwiki.tool.spoon.ForbiddenInvocationProcessor</processor>
</processors>
<processorProperties>
<processorProperty>
<name>org.xwiki.tool.spoon.ForbiddenInvocationProcessor</name>
<properties>
<property>
<name>methods</name>
<value>
{
<!-- Does not make any sense in the context of an application server and it can cause memory
leaks -->
"java.io.File": ["deleteOnExit"],
<!-- The URL#equals implementation is insane (it actually tries to access the host with HTTP URLs
for example) -->
"java.net.URL": ["equals"]
}
</value>
</property>
</properties>
</processorProperty>
</processorProperties>
</configuration>
<dependencies>
<!-- Contains custom Spoon processors -->
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-spoon</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- Apply checkstyle rules and fail the build in case of errors. The checkstyle config
files are taken from the xwiki-commons-tool-verification-resources JAR module.-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-verification-resources</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
<configuration>
<propertyExpansion>
currentVersion=${project.version}
</propertyExpansion>
<failOnViolation>true</failOnViolation>
<!-- Used by the "blocker" execution id and the "default-cli" one
(i.e. when executing "mvn checkstyle:check") -->
<configLocation>checkstyle-blocker.xml</configLocation>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<configLocation>checkstyle.xml</configLocation>
</configuration>
</execution>
<execution>
<!-- Checks that should never be excluded from executing in maven projects -->
<id>blocker</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Check license headers and fail the build if they're missing or not matching the defined format -->
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<configuration>
<skip>${xwiki.license.skip}</skip>
<header>license.txt</header>
<strictCheck>true</strictCheck>
<headerDefinitions>
<!-- Our style for XML headers isn't standard so we need to define it in a custom manner.
See xwiki-commons-tool-verification-resources module -->
<headerDefinition>license-xml-definition.xml</headerDefinition>
<headerDefinition>license-script-definition.xml</headerDefinition>
<headerDefinition>license-batch-definition.xml</headerDefinition>
</headerDefinitions>
<!-- Our Java and XML styles aren't the default so we need to change the mapping -->
<mapping>
<java>SLASHSTAR_STYLE</java>
<aj>SLASHSTAR_STYLE</aj>
</mapping>
<!-- We're only interested in checking our sources and our POMs -->
<includes>
<!-- At the moment, only check the following list of files for license headers -->
<include>pom.xml</include>
<include>src/**/*.java</include>
<include>src/**/*.bat</include>
<include>src/**/*.sh</include>
<include>src/**/ApplicationResources.properties</include>
</includes>
<excludes>
<!-- At the moment we don't have a comment syntax for components.txt files so we need to exclude them
from the check -->
<exclude>**/components.txt</exclude>
<exclude>**/component-overrides.txt</exclude>
<!-- Since there's no comment syntax for Maven IT tests's goal.txt file we need to exclude it -->
<exclude>**/it/**/goals.txt</exclude>
<exclude>**/goal.txt</exclude>
<!-- Don't check DSpot-generated tests for license headers. DSpot does keep license headers but it
modifies their styles, thus leading this plugin to think there's no license header.
See https://github.com/STAMP-project/dspot/issues/538 -->
<exclude>src/test/dspot/**/*.*</exclude>
</excludes>
</configuration>
<!-- Add a dependency since this is where the license-maven-plugin plugin will find the license.txt file -->
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-verification-resources</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-xar-plugin</artifactId>
<version>12.0</version>
<configuration>
<!-- Add missing license headers by default -->
<formatLicense>true</formatLicense>
<!-- Consider all pages named *Translations as content pages (since they have translations) but also
as Technical pages since they need to be hidden. -->
<contentPages>
<contentPage>.*/.*Translations\.xml</contentPage>
</contentPages>
<technicalPages>
<technicalPage>.*/.*Translations\.xml</technicalPage>
</technicalPages>
<titles>
<!-- Verify that all WebPreferences pages have the same title for consistency -->
<property>
<name>.*WebPreferences</name>
<value>\$services\.localization\.render\('admin.preferences.title'\)</value>
</property>
</titles>
<!-- Check for empty parents since, even though this is deprecated, we still want to set it FTM -->
<emptyParentSkip>false</emptyParentSkip>
</configuration>
</plugin>
<!-- Add archiving support for various XWiki specific formats in the dependency plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-archiver</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
</plugin>
<!-- Add archiving support for various XWiki specific formats in the assembly plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.xwiki.commons</groupId>
<artifactId>xwiki-commons-tool-archiver</artifactId>
<version>12.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>