<?xml version="1.0" encoding="UTF-8"?>
<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">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-parent</artifactId>
    <version>3.0.0</version>
  </parent>

  <artifactId>sso-kit</artifactId>
  <version>4.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>SSO Kit</name>

  <licenses>
    <license>
      <name>Vaadin Commercial License and Service Terms</name>
      <url>https://vaadin.com/commercial-license-and-service-terms</url>
    </license>
  </licenses>

  <modules>
    <module>sso-kit-core</module>
    <module>sso-kit-starter</module>
    <module>sso-kit-keycloak</module>
  </modules>

  <properties>
    <flow.version>25.0-SNAPSHOT</flow.version>
    <hilla.version>25.0-SNAPSHOT</hilla.version>
    <vaadin.license.checker.version>3.0.1</vaadin.license.checker.version>

    <maven.compiler.release>21</maven.compiler.release>
    <maven.compiler.source>${maven.compiler.release}</maven.compiler.source>
    <maven.compiler.target>${maven.compiler.release}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring.boot.version>4.0.4</spring.boot.version>
    <maven.jar.version>3.4.2</maven.jar.version>
    <maven.source.version>3.3.1</maven.source.version>
    <maven.javadoc.version>3.12.0</maven.javadoc.version>
    <maven.surefire.version>3.5.4</maven.surefire.version>
    <spotless.plugin.version>3.0.0</spotless.plugin.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-spring</artifactId>
        <version>${flow.version}</version>
      </dependency>
      <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>hilla-endpoint</artifactId>
        <version>${hilla.version}</version>
      </dependency>
      <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>license-checker</artifactId>
        <version>${vaadin.license.checker.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <repositories>
    <repository>
      <id>vaadin-prereleases</id>
      <url>https://maven.vaadin.com/vaadin-prereleases/</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>vaadin-prereleases</id>
      <url>https://maven.vaadin.com/vaadin-prereleases/</url>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${maven.source.version}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
            <phase>package</phase>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven.javadoc.version}</version>
        <configuration>
          <quiet>true</quiet>
          <doclint>none</doclint>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <phase>package</phase>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.version}</version>
      </plugin>

      <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <version>${spotless.plugin.version}</version>
        <configuration>
          <java>
            <eclipse>
              <file>https://raw.githubusercontent.com/vaadin/flow/master/eclipse/VaadinJavaConventions.xml</file>
            </eclipse>
            <endWithNewline/>
            <removeUnusedImports/>
            <importOrder>
              <file>https://raw.githubusercontent.com/vaadin/flow/refs/heads/main/eclipse/flow.importorder</file>
            </importOrder>
            <forbidWildcardImports/>
          </java>
          <typescript>
            <includes>
              <include>sso-kit-client/core/src/**/*.ts</include>
              <include>sso-kit-client/core/test/**/*.ts</include>
              <include>sso-kit-client/lit/src/**/*.ts</include>
              <include>sso-kit-client/lit/test/**/*.ts</include>
              <include>sso-kit-client/react/src/**/*.ts</include>
              <include>sso-kit-client/react/test/**/*.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>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>demo</id>
      <activation>
        <property>
          <name>!release</name>
        </property>
      </activation>
      <modules>
        <module>sso-kit-demo</module>
      </modules>
    </profile>
    <profile>
      <id>hilla</id>
      <activation>
        <property>
          <name>!skipHilla</name>
        </property>
      </activation>
      <modules>
        <module>sso-kit-starter-hilla</module>
      </modules>
    </profile>
  </profiles>

</project>
