blob: 8262cbfeaddf51fdfd224101e85e5615cad4e7c4 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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>
<groupId>org.apache.guacamole</groupId>
<artifactId>guacamole-client</artifactId>
<packaging>pom</packaging>
<version>1.5.2</version>
<name>guacamole-client</name>
<url>http://guacamole.apache.org/</url>
<properties>
<!-- Core properties -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Dependency versions -->
<guava.version>31.1-jre</guava.version>
<guice.version>5.1.0</guice.version>
<hk2.version>2.6.1</hk2.version>
<jackson.version>2.15.0</jackson.version>
<jackson-databind.version>2.15.0</jackson-databind.version>
<jersey.version>2.39.1</jersey.version>
<junit.version>5.9.2</junit.version>
<junit4.version>4.13.2</junit4.version>
<logback.version>1.3.7</logback.version>
<slf4j.version>2.0.7</slf4j.version>
<!-- The directory that should receive all generated dependency lists
(for LICENSE generation) -->
<dependency.list.directory>${project.build.directory}/dependencies</dependency.list.directory>
<!-- Set to "true" to ignore errors that occur during automatic LICENSE
file generation (such as non-existent license documentation) as
well as errors that occur during the RAT check (such as incorrect
or missing license headers). -->
<ignoreLicenseErrors>false</ignoreLicenseErrors>
</properties>
<modules>
<!-- Guacamole web application -->
<module>guacamole</module>
<!-- Guacamole Java API -->
<module>guacamole-common</module>
<!-- Guacamole webapp extension API -->
<module>guacamole-ext</module>
<!-- Guacamole JavaScript API -->
<module>guacamole-common-js</module>
<!-- Authentication extensions -->
<module>extensions</module>
<!-- Example web applications using the Guacamole APIs -->
<module>doc/guacamole-example</module>
<module>doc/guacamole-playback-example</module>
</modules>
<build>
<plugins>
<!-- Verify format using Apache RAT -->
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<version>0.13</version>
<executions>
<execution>
<id>validate-licenses</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<excludesFile>${basedir}/.ratignore</excludesFile>
<excludes>
<exclude>.dockerignore</exclude>
<exclude>.ratignore</exclude>
<exclude>**/*.md</exclude>
<exclude>**/*.json</exclude>
<exclude>**/*.svg</exclude>
<exclude>**/node_modules/**/*</exclude>
<exclude>**/templates/*.html</exclude>
<exclude>src/licenses/**/*</exclude>
<exclude>target/**/*</exclude>
</excludes>
<skip>${ignoreLicenseErrors}</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<!-- Define a "rootlocation" property that can be used to
reference the location of the main guacamole-client
directory -->
<execution>
<id>define-project-root</id>
<goals>
<goal>rootlocation</goal>
</goals>
</execution>
<!-- Define a "guacamole.build.identifier" property that
can be used to uniquely identify the current build
relative to previous builds -->
<execution>
<id>define-build-timestamp</id>
<configuration>
<name>guacamole.build.identifier</name>
<timeSource>build</timeSource>
<pattern>yyyyMMddHHmmss</pattern>
</configuration>
<goals>
<goal>timestamp-property</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Automatically generate list of Maven runtime dependencies -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>list-maven-runtime-dependencies</id>
<phase>generate-resources</phase>
<configuration>
<includeScope>runtime</includeScope>
<excludeReactor>false</excludeReactor>
<excludeGroupIds>org.apache.guacamole</excludeGroupIds>
<outputFile>${dependency.list.directory}/maven-runtime-dependencies.txt</outputFile>
</configuration>
<goals>
<goal>list</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Automatically verify build sanity -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
<requireUpperBoundDeps/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- Java code within guacamole-client is written to be
compatible with Java 8 and should not produce ANY compiler
warnings -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
<failOnWarning>true</failOnWarning>
<fork>true</fork>
</configuration>
</plugin>
<!-- Provide "generate-license-files" execution for automatic
generation of LICENSE and NOTICE files -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>generate-license-files</id>
<phase>none</phase>
<configuration>
<executable>${rootlocation}/doc/licenses/generate-license-files.sh</executable>
<arguments>
<argument>${dependency.list.directory}</argument>
<argument>${project.build.directory}/licenses</argument>
</arguments>
<environmentVariables>
<IGNORE_LICENSE_ERRORS>${ignoreLicenseErrors}</IGNORE_LICENSE_ERRORS>
</environmentVariables>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Use latest version of JavaScript/CSS minification plugin -->
<plugin>
<groupId>com.github.buckelieg</groupId>
<artifactId>minify-maven-plugin</artifactId>
<version>2.0.1</version>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.5.1</version>
</dependency>
</dependencies>
</plugin>
<!-- Explicitly use latest versions of core plugins -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<!-- Provide default configurations for attaching JavaDoc and source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<detectOfflineLinks>false</detectOfflineLinks>
<source>8</source>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencyManagement>
<dependencies>
<!-- Guava utility library -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- Guice dependency injection -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-servlet</artifactId>
<version>${guice.version}</version>
</dependency>
<!-- Jersey JAX-RS implementation -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.hk2</groupId>
<artifactId>guice-bridge</artifactId>
<version>${hk2.version}</version>
</dependency>
<!-- Jackson JSON mapper -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
<!-- Exclude StAX API, which is part of Java 6 -->
<exclusions>
<exclusion>
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<!-- JUnit v5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- JUnit v4 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit4.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<!-- Automatically build distribution archive if dist.xml assembly is present -->
<profile>
<id>build-dist-archive</id>
<activation>
<file><exists>src/main/assembly/dist.xml</exists></file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>make-dist-archive</id>
<phase>package</phase>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<tarLongFileMode>posix</tarLongFileMode>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
</configuration>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>