<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-parent</artifactId>
    <version>2.2.1</version>
  </parent>
  <groupId>com.vaadin</groupId>
  <artifactId>flow-project</artifactId>
  <version>24.3.9</version>
  <packaging>pom</packaging>
  <name>Flow</name>
  <url>https://vaadin.com/flow</url>
  <licenses>
    <license>
      <name>Apache License Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <properties>
    <osgi.compendium.version>7.0.0</osgi.compendium.version>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <flow.addons.repo.id>vaadin-addons</flow.addons.repo.id>
    <jaxb.version>4.0.4</jaxb.version>
    <jackson.version>2.16.0</jackson.version>
    <maven.javadoc.skip>true</maven.javadoc.skip>
    <failsafe.perCoreThreadCount>true</failsafe.perCoreThreadCount>
    <maven.resources.plugin.version>3.0.2</maven.resources.plugin.version>
    <osgi.annotation.version>8.1.0</osgi.annotation.version>
    <failsafe.parallel>all</failsafe.parallel>
    <sonar.issuesReport.html.enable>true</sonar.issuesReport.html.enable>
    <slf4j.version>2.0.9</slf4j.version>
    <jsinterop.version>1.0.2</jsinterop.version>
    <atmosphere.runtime.version>3.0.5.slf4jvaadin1</atmosphere.runtime.version>
    <atmosphere.client.version>3.1.3</atmosphere.client.version>
    <maven.version>3.9.5</maven.version>
    <maven.compiler.source>${maven.compiler.release}</maven.compiler.source>
    <jackson.databind.version>2.16.0</jackson.databind.version>
    <sonar.analysis.mode>preview</sonar.analysis.mode>
    <flow.dev.dependencies.folder>generatedDeps</flow.dev.dependencies.folder>
    <jakarta.validation.version>3.0.2</jakarta.validation.version>
    <testListener>com.vaadin.flow.testutil.CurrentInstanceCleaner</testListener>
    <maven.war.plugin.version>3.4.0</maven.war.plugin.version>
    <maven.surefire.plugin.version>3.2.2</maven.surefire.plugin.version>
    <maven.compiler.release>17</maven.compiler.release>
    <exclude.windows.failed.tests></exclude.windows.failed.tests>
    <bnd.version>6.4.0</bnd.version>
    <flow.release.repo.id>vaadin-prereleases</flow.release.repo.id>
    <osgi.core.version>7.0.0</osgi.core.version>
    <hibernate.validator.version>8.0.1.Final</hibernate.validator.version>
    <maven.exec.plugin.version>1.6.0</maven.exec.plugin.version>
    <spring.boot.version>3.2.5</spring.boot.version>
    <sonar.java.source>17</sonar.java.source>
    <osgi.bundle.version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</osgi.bundle.version>
    <jakarta.annotation.api.version>2.1.1</jakarta.annotation.api.version>
    <jetty.version>12.0.3</jetty.version>
    <guava.version>32.1.3-jre</guava.version>
    <flow.addons.repo.url>https://maven.vaadin.com/vaadin-addons</flow.addons.repo.url>
    <flow.release.repo.url>https://maven.vaadin.com/vaadin-prereleases/</flow.release.repo.url>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <flow.dev.dependencies.file>devDependencies.json</flow.dev.dependencies.file>
    <failsafe.threadCount>2</failsafe.threadCount>
    <polymer.version>2.6.1</polymer.version>
    <sonar.issuesReport.console.enable>true</sonar.issuesReport.console.enable>
    <maven.failsafe.plugin.version>3.2.2</maven.failsafe.plugin.version>
    <maven.test.skip>false</maven.test.skip>
    <maven.clean.plugin.version>3.3.2</maven.clean.plugin.version>
    <jsoup.version>1.17.2</jsoup.version>
    <build-helper-maven-plugin.version>3.4.0</build-helper-maven-plugin.version>
    <properties-maven-plugin.version>1.2.1</properties-maven-plugin.version>
    <jakarta.websocket.version>2.1.1</jakarta.websocket.version>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <excludedGroups>com.vaadin.flow.testcategory.SlowTests</excludedGroups>
    <maven.compiler.target>${maven.compiler.release}</maven.compiler.target>
    <frontend.maven.plugin.version>1.5</frontend.maven.plugin.version>
    <gwt.version>2.9.0</gwt.version>
    <testbench.version>9.2.6</testbench.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.jsinterop</groupId>
        <artifactId>jsinterop</artifactId>
        <version>${jsinterop.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.google.gwt</groupId>
        <artifactId>gwt-elemental</artifactId>
        <version>${gwt.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.15.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.14.0</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
      </dependency>
      <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-web-api</artifactId>
        <version>10.0.0</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>1.14.10</version>
      </dependency>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>9.6</version>
      </dependency>
      <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>license-checker</artifactId>
        <version>1.12.8</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>5.7.0</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-inline</artifactId>
        <version>5.2.0</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh-external</artifactId>
        <version>3.5.3</version>
      </extension>
    </extensions>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>${build-helper-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.karaf.tooling</groupId>
          <artifactId>karaf-maven-plugin</artifactId>
          <version>4.3.9</version>
          <extensions>true</extensions>
          <executions>
            <execution>
              <id>generate-features-file</id>
              <phase>generate-resources</phase>
              <goals>
                <goal>features-generate-descriptor</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.4.1</version>
          <executions>
            <execution>
              <id>check-logging-imports</id>
              <phase>process-sources</phase>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <RestrictImports>
                    <reason>Use SLF4j for logging</reason>
                    <bannedImport>java.util.logging.**</bannedImport>
                  </RestrictImports>
                </rules>
              </configuration>
            </execution>
            <execution>
              <id>default-cli</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <dependencyConvergence />
                </rules>
              </configuration>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>de.skuzzle.enforcer</groupId>
              <artifactId>restrict-imports-enforcer-rule</artifactId>
              <version>2.4.0</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>${maven.war.plugin.version}</version>
          <configuration>
            <archive>
              <manifestEntries>
                <Implementation-Title>${project.name}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven.surefire.plugin.version}</version>
          <configuration>
            <trimStackTrace>false</trimStackTrace>
            <excludes>
              <exclude>${exclude.windows.failed.tests}</exclude>
            </excludes>
            <argLine>${surefire.argLine}</argLine>
            <properties>
              <property>
                <name>listener</name>
                <value>${testListener}</value>
              </property>
            </properties>
            <enableAssertions>true</enableAssertions>
            <classpathDependencyExcludes>
              <classpathDependencyExclude>org.osgi:org.osgi.core</classpathDependencyExclude>
            </classpathDependencyExcludes>
            <failIfNoTests>false</failIfNoTests>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${maven.failsafe.plugin.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>com.sun.xml.bind</groupId>
              <artifactId>jaxb-impl</artifactId>
              <version>${jaxb.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <argLine>${failsafe.argLine}</argLine>
            <trimStackTrace>false</trimStackTrace>
            <enableAssertions>true</enableAssertions>
            <parallel>${failsafe.parallel}</parallel>
            <threadCount>${failsafe.threadCount}</threadCount>
            <perCoreThreadCount>${failsafe.perCoreThreadCount}</perCoreThreadCount>
            <systemPropertyVariables>
              <serverPort>${server.port}</serverPort>
            </systemPropertyVariables>
            <excludes>
              <exclude>**/*$*</exclude>
              <exclude>${exclude.it.tests}</exclude>
              <exclude>${exclude.windows.failed.it.tests}</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.siom79.japicmp</groupId>
          <artifactId>japicmp-maven-plugin</artifactId>
          <dependencies>
            <dependency>
              <groupId>javax.activation</groupId>
              <artifactId>javax.activation-api</artifactId>
              <version>1.2.0</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.commonjava.maven.plugins</groupId>
                    <artifactId>directory-maven-plugin</artifactId>
                    <versionRange>[0.1,)</versionRange>
                    <goals>
                      <goal>highest-basedir</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <versionRange>[3.2,)</versionRange>
                    <goals>
                      <goal>descriptor</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[1.7,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>2.3.0</version>
          <configuration>
            <excludedScopes>system,test</excludedScopes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>net.revelc.code.formatter</groupId>
        <artifactId>formatter-maven-plugin</artifactId>
        <version>2.23.0</version>
        <configuration>
          <configFile>https://raw.githubusercontent.com/vaadin/flow/main/eclipse/VaadinJavaConventions.xml</configFile>
          <configJsFile>https://raw.githubusercontent.com/vaadin/flow/main/eclipse/VaadinJavaConventions.xml</configJsFile>
          <lineEnding>LF</lineEnding>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.6.2</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <phase>verify</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <quiet>true</quiet>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.4.1</version>
      </plugin>
      <plugin>
        <groupId>org.commonjava.maven.plugins</groupId>
        <artifactId>directory-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>set-root-dir-for-common-lifecycle</id>
            <phase>initialize</phase>
            <goals>
              <goal>highest-basedir</goal>
            </goals>
            <configuration>
              <property>project.rootdir</property>
            </configuration>
          </execution>
          <execution>
            <id>set-root-dir-for-clean-lifecycle</id>
            <phase>pre-clean</phase>
            <goals>
              <goal>highest-basedir</goal>
            </goals>
            <configuration>
              <property>project.rootdir</property>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>${maven.clean.plugin.version}</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>${project.rootdir}/driver</directory>
            </fileset>
            <fileset>
              <directory>${project.rootdir}/driver_zips</directory>
            </fileset>
            <fileset>
              <directory>error-screenshots</directory>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>parse-version</id>
            <goals>
              <goal>parse-version</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-maven-plugin</artifactId>
        <version>${bnd.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>bnd-process</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
