domingo, 8 de noviembre de 2020

Proyectos mixtos Java\Scala con Maven


En algunas ocasiones puede resultar interesante hacer proyectos mixtos Java\Scala. 
Es algo sencillo de hacer y aunque la propia documentación de scala  te lleva al scala-maven-plugin no es fácil de encontrar.
Para empezar tienes que saltar varios enlaces y luego te hace sospechar que no estas en el sitio correcto cuando ves que el plugin no es de org.scala-lang. 

Al lío...
Para compilar en un mismo proyecto código java y scala, pondremos los fuentes de java bajo el path: src/main/java
y el código sacla bajo el path: src/main/scala

En el pom debemos de añadir la dependencia con scala y modificar el build para que use dos compiladores, el de por defecto de maven y el de scala, siguiendo la documentación acabaríamos con un pom como este:
 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 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>sandbox</groupid>
	<artifactid>testJavaAndScala</artifactid>
	<version>1.0-SNAPSHOT</version>
	<name>Test for Java + Scala compilation</name>
	<description>Test for Java + Scala compilation</description>

	<dependencies>
		<dependency>
			<groupid>org.scala-lang</groupid>
			<artifactid>scala-library</artifactid>
			<version>2.7.2</version>
		</dependency>
	</dependencies>

	<build>
		<pluginmanagement>
			<plugins>
				<plugin>
					<groupid>net.alchim31.maven</groupid>
					<artifactid>scala-maven-plugin</artifactid>
					<version>4.4.0</version>
				</plugin>
				<plugin>
					<groupid>org.apache.maven.plugins</groupid>
					<artifactid>maven-compiler-plugin</artifactid>
					<version>2.0.2</version>
				</plugin>
			</plugins>
		</pluginmanagement>
		<plugins>
			<plugin>
				<groupid>net.alchim31.maven</groupid>
				<artifactid>scala-maven-plugin</artifactid>
				<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>testCompile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupid>org.apache.maven.plugins</groupid>
				<artifactid>maven-compiler-plugin</artifactid>
				<executions>
					<execution>
						<phase>compile</phase>
						<goals>
							<goal>compile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

Con esto en vuestro proyecto compila java y scala a la vez.
Si lo que reis ver en acción, hemos hecho un video dónde usamos los dos lenguajes en una aplicación springboot.


No hay comentarios:

Publicar un comentario