Add Scala compiler.

Change-Id: I68ffcf35b1b6ea2e42a479bdb71f868a486781db
diff --git a/pom.xml b/pom.xml
index 5f7a1f1..c5261ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,6 +13,8 @@
     <maven.compiler.source>11</maven.compiler.source>
     <maven.compiler.target>11</maven.compiler.target>
 
+    <scala.version>2.13.3</scala.version>
+
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
@@ -21,6 +23,7 @@
     <quarkus.version>1.7.0.Final</quarkus.version>
     <resources-plugin.version>3.1.0</resources-plugin.version>
     <spotless-plugin.version>2.0.1</spotless-plugin.version>
+    <scala-plugin.version>4.4.0</scala-plugin.version>
 
     <!-- <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id> -->
     <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
@@ -35,6 +38,7 @@
     <jakarta-jacc-api.version>1.6.1</jakarta-jacc-api.version>
     <jna.version>5.6.0</jna.version>
     <jsoup.version>1.13.1</jsoup.version>
+    <kotlin-annotations.version>1.4.0</kotlin-annotations.version>
     <liquibase.version>3.9.0</liquibase.version>
     <postgresql.version>42.2.14</postgresql.version>
     <rome.version>1.15.0</rome.version>
@@ -122,11 +126,26 @@
   <dependencies>
 
     <dependency>
+      <groupId>org.scala-lang</groupId>
+      <artifactId>scala-library</artifactId>
+      <version>${scala.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.scala-lang</groupId>
+      <artifactId>scala-reflect</artifactId>
+      <version>${scala.version}</version>
+    </dependency>
+
+    <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-agroal</artifactId>
     </dependency>
     <dependency>
       <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-scala</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
       <artifactId>quarkus-elytron-security-properties-file</artifactId>
     </dependency>
     <dependency>
@@ -368,6 +387,77 @@
         </executions>
       </plugin>
 
+      <plugin>
+        <groupId>net.alchim31.maven</groupId>
+        <artifactId>scala-maven-plugin</artifactId>
+        <version>${scala-plugin.version}</version>
+
+        <executions>
+          <execution>
+            <id>scala-compile-first</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>add-source</goal>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>scala-test-compile</id>
+            <phase>process-test-resources</phase>
+            <goals>
+              <goal>add-source</goal>
+              <goal>testCompile</goal>
+            </goals>
+          </execution>
+        </executions>
+
+        <configuration>
+          <scalaVersion>${scala.version}</scalaVersion>
+          <localInstall>false</localInstall>
+          <!--<recompileMode>incremental</recompileMode>-->
+          <args>
+            <arg>-Xsource:3</arg>
+            <!--
+            <arg>-deprecation</arg>
+            <arg>-feature</arg>
+            <arg>-explaintypes</arg>
+            <arg>-target:jvm-1.8</arg>
+            <arg>-Ypartial-unification</arg>
+            -->
+          </args>
+
+          <javacArgs>
+            <javacArg>-Xlint:deprecation</javacArg>
+          </javacArgs>
+
+          <additionalDependencies>
+
+            <!-- Hibernate -->
+            <dependency>
+              <groupId>org.hibernate</groupId>
+              <artifactId>hibernate-jpamodelgen</artifactId>
+              <version>${hibernate.version}</version>
+            </dependency>
+
+            <!-- Quarkus -->
+            <dependency>
+              <groupId>io.quarkus</groupId>
+              <artifactId>quarkus-panache-common</artifactId>
+              <version>${quarkus.version}</version>
+            </dependency>
+
+            <!-- Annotations -->
+            <dependency>
+              <groupId>org.jetbrains.kotlin</groupId>
+              <artifactId>kotlin-annotations-jvm</artifactId>
+              <version>${kotlin-annotations.version}</version>
+            </dependency>
+
+          </additionalDependencies>
+        </configuration>
+
+      </plugin>
+
     </plugins>
 
     <resources>
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/about/AboutResource.java b/src/main/scala/eu/mulk/mulkcms2/cms/about/AboutResource.scala
similarity index 60%
rename from src/main/java/eu/mulk/mulkcms2/cms/about/AboutResource.java
rename to src/main/scala/eu/mulk/mulkcms2/cms/about/AboutResource.scala
index 39ecaca..0d70f53 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/about/AboutResource.java
+++ b/src/main/scala/eu/mulk/mulkcms2/cms/about/AboutResource.scala
@@ -1,23 +1,21 @@
 package eu.mulk.mulkcms2.cms.about;
 
-import static javax.ws.rs.core.MediaType.TEXT_HTML;
-
 import io.quarkus.qute.Template;
 import io.quarkus.qute.TemplateInstance;
 import io.quarkus.qute.api.ResourcePath;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
 
 @Path("/about")
-public class AboutResource {
+class AboutResource {
 
   @ResourcePath("benki/about/index.html")
-  Template index;
+  var index: Template = null;
 
   @GET
-  @Produces(TEXT_HTML)
-  public TemplateInstance getIndex() {
-    return index.instance();
-  }
+  @Produces(Array(MediaType.TEXT_HTML))
+  def getIndex(): TemplateInstance =
+    index.instance();
 }