<?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>3.0.0</version>
  </parent>
  <groupId>com.vaadin</groupId>
  <artifactId>flow-project</artifactId>
  <version>25.0.6</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>
  <scm>
    <connection>scm:https:https://github.com/vaadin/flow.git</connection>
    <developerConnection>scm:git:git@github.com:vaadin/flow.git</developerConnection>
    <url>https://github.com/vaadin/flow</url>
  </scm>
  <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.6</jaxb.version>
    <jackson.version>3.0.4</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.17</slf4j.version>
    <jsinterop.version>1.0.2</jsinterop.version>
    <javassist.version>3.30.2-GA</javassist.version>
    <atmosphere.runtime.version>3.0.5.slf4jvaadin1</atmosphere.runtime.version>
    <atmosphere.client.version>4.0.1</atmosphere.client.version>
    <maven.version>3.9.11</maven.version>
    <maven.compiler.source>${maven.compiler.release}</maven.compiler.source>
    <flow.dev.dependencies.folder>generatedDeps</flow.dev.dependencies.folder>
    <testListener>com.vaadin.flow.testutil.CurrentInstanceCleaner</testListener>
    <maven.war.plugin.version>3.5.1</maven.war.plugin.version>
    <maven.surefire.plugin.version>3.5.4</maven.surefire.plugin.version>
    <maven.compiler.release>21</maven.compiler.release>
    <exclude.windows.failed.tests></exclude.windows.failed.tests>
    <bnd.version>7.1.0</bnd.version>
    <flow.release.repo.id>vaadin-prereleases</flow.release.repo.id>
    <osgi.core.version>7.0.0</osgi.core.version>
    <jakarta.ee.version>11.0.0</jakarta.ee.version>
    <hibernate.validator.version>9.1.0.Final</hibernate.validator.version>
    <maven.exec.plugin.version>1.6.0</maven.exec.plugin.version>
    <spotless.plugin.version>3.1.0</spotless.plugin.version>
    <sonar.java.source>21</sonar.java.source>
    <spring.boot.version>4.0.1</spring.boot.version>
    <osgi.bundle.version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</osgi.bundle.version>
    <jetty.version>12.1.5</jetty.version>
    <guava.version>33.5.0-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.5.4</maven.failsafe.plugin.version>
    <spotless.license-header>${maven.multiModuleProjectDirectory}/eclipse/apache2-license-header.txt</spotless.license-header>
    <maven.test.skip>false</maven.test.skip>
    <maven.clean.plugin.version>3.5.0</maven.clean.plugin.version>
    <jsoup.version>1.21.2</jsoup.version>
    <maven-plugin-annotations.version>3.15.2</maven-plugin-annotations.version>
    <build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
    <properties-maven-plugin.version>1.2.1</properties-maven-plugin.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>10.0.0</testbench.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>tools.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${jackson.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-bom</artifactId>
        <version>${jakarta.ee.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <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.21.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.20.0</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>1.18.2</version>
      </dependency>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>9.9.1</version>
      </dependency>
      <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>license-checker</artifactId>
        <version>3.0.1</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.21.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>
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>4.3.0</version>
      </dependency>
      <dependency>
        <groupId>org.lucee</groupId>
        <artifactId>jcip-annotations</artifactId>
        <version>1.0.0</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.6.2</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>3.0.0</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.5.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>
            <systemPropertyVariables>
              <maven.home>${maven.home}</maven.home>
            </systemPropertyVariables>
          </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.7.0</version>
          <configuration>
            <excludedScopes>system,test</excludedScopes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.4.0</version>
          <configuration>
            <propertiesEncoding>UTF-8</propertiesEncoding>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.sonarsource.scanner.maven</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>5.5.0.6356</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <version>${spotless.plugin.version}</version>
        <configuration>
          <java>
            <eclipse>
              <file>${maven.multiModuleProjectDirectory}/eclipse/VaadinJavaConventions.xml</file>
            </eclipse>
            <endWithNewline />
            <removeUnusedImports />
            <importOrder>
              <file>${maven.multiModuleProjectDirectory}/eclipse/flow.importorder</file>
            </importOrder>
            <forbidWildcardImports />
            <licenseHeader>
              <file>${spotless.license-header}</file>
            </licenseHeader>
          </java>
          <typescript>
            <includes>
              <include>src/**/*.js</include>
              <include>src/**/*.ts</include>
              <include>frontend/**/*.js</include>
              <include>frontend/**/*.ts</include>
            </includes>
            <excludes>
              <exclude>src/main/frontend/generated/**</exclude>
            </excludes>
            <prettier>
              <configFile>${maven.multiModuleProjectDirectory}/.prettierrc</configFile>
              <npmInstallCache>${maven.multiModuleProjectDirectory}/target/.spotless-npm-install-cache</npmInstallCache>
            </prettier>
          </typescript>
          <css>
            <includes>
              <include>src/**/*.css</include>
              <include>frontend/**/*.css</include>
            </includes>
            <excludes>
              <exclude>src/main/frontend/generated/**</exclude>
            </excludes>
            <prettier>
              <configFile>${maven.multiModuleProjectDirectory}/.prettierrc</configFile>
              <npmInstallCache>${maven.multiModuleProjectDirectory}/target/.spotless-npm-install-cache</npmInstallCache>
            </prettier>
          </css>
          <pom>
            <sortPom>
              <expandEmptyElements>false</expandEmptyElements>
            </sortPom>
          </pom>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.14.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.4.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.12.0</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.6.2</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>
