代码之家  ›  专栏  ›  技术社区  ›  Alain O'Dea

如何为Scala/javamaven混合项目自动配置Scala方面?

  •  8
  • Alain O'Dea  · 技术社区  · 14 年前

    如何让IntelliJ在混合Scala和Java源代码的Maven项目中自动配置Scala方面?

    编译 运行测试 两者都从命令提示符和 无法编译Scala文件 请在Scala方面指定编译器 .

    项目目录结构:

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

    上市公司 :

    public class HelloJava {}
    

    海洛斯卡拉

    class HelloScala
    

    上市公司 测试java.java :

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

    上市公司 鳞片 :

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

    上市公司 :

    <?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>
    
    1 回复  |  直到 10 年前
        1
  •  7
  •   Jacek Laskowski    10 年前

    添加 <configuration/> 节点到 <plugin/> 的节点 maven-scala-plugin 就在那之后 <executions/>

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

    现在Scala插件自动检测Scala编译器并自动配置Scala方面。现在,调试、运行、make等都直接通过IntelliJ接口工作。

    请注意 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.