2010-09-02 14 views
8

¿Cómo consigo que IntelliJ configure automáticamente la faceta Scala en un proyecto Maven con código fuente mezclado de Scala y Java?¿Cómo configurar IDEA para configurar automáticamente la faceta de Scala para el proyecto mixto Scala/Java Maven?

estoy usando Scala Plugin noche para Maia Build 2099.

mvn compile y mvn test tanto el trabajo de la línea de comandos y de la Proyectos Maven del panel de IntelliJ. Sin embargo, si intento ejecutar ScalaSpec directamente en IntelliJ, presenta un cuadro de diálogo de error No se pueden compilar los archivos de Scala con contenido Especifique el compilador en la faceta de Scala.

Proyecto de estructura de directorios:

MixedJavaScala 
│ MixedScalaJava.iml 
│ pom.xml 
│ 
└───src 
    ├───main 
    │ ├───java 
    │ │  HelloJava.java 
    │ │ 
    │ └───scala 
    │   HelloScala.scala 
    │ 
    └───test 
     ├───java 
     │  TestJava.java 
     │ 
     └───scala 
       ScalaSpec.scala 

Listado de HelloJava.java:

public class HelloJava {} 

Listado de HelloScala.scala:

class HelloScala 

Listado de TestJava.java:

public class TestJava 
{ 
    @org.junit.Test public void example() {} 
} 

Listado de ScalaSpec.scala:

class ScalaSpec extends org.specs.Specification { 
    "nothing interesting should happen" in {} 
} 

Listado de pom.xml:

<?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 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.scala-tools.maven-scala-plugin</groupId> 
    <artifactId>MixedScalaJava</artifactId> 
    <version>1.0</version> 
    <name>Test for Java + Scala compilation</name> 
    <description>Test for Java + Scala compilation</description> 

    <dependencies> 
    <dependency> 
     <groupId>org.scala-tools.testing</groupId> 
     <artifactId>specs_2.8.0</artifactId> 
     <version>1.6.5</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>2.8.0</version> 
    </dependency> 
    </dependencies> 
    <repositories> 
    <repository> 
     <id>scala-tools.org</id> 
     <name>Scala-tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-releases</url> 
    </repository> 
    </repositories> 
    <pluginRepositories> 
    <pluginRepository> 
     <id>scala-tools.org</id> 
     <name>Scala-tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-releases</url> 
    </pluginRepository> 
    </pluginRepositories> 

    <build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.scala-tools</groupId> 
      <artifactId>maven-scala-plugin</artifactId> 
      <version>2.14.1</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
     <groupId>org.scala-tools</groupId> 
     <artifactId>maven-scala-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> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

</project> 

Respuesta

7

Añadir un nodo <configuration/> a la <plugin/> nodo para maven-scala-plugin justo después del <executions/> nodo

<configuration> 
    <scalaVersion>2.8.0</scalaVersion> 
</configuration> 

Ahora la Scala plugin detecta automáticamente el compilador Scala y auto-configura la Scala de faceta. La depuración, ejecución, marca y similares funcionan directamente a través de la interfaz IntelliJ ahora.

Funciona hasta scala-maven-plugin 3.2.0.

Tenga en cuenta que Since version 2.7 of the plugin, the scala version to use is detected from dependency to scala-library. So it suggested to not use scalaVersion configuration.

Cuestiones relacionadas