IDE可以使用Maven在Java中解析Scala类吗?

时间:2010-08-02 23:34:49

标签: java maven-2 scala netbeans intellij-idea

我有一个带有混合Java和Scala源的项目,遵循this page上的说明,该命令在从命令行运行Maven时有效。

然而,使用像IDEA和Netbeans这样的IDE的人在使用Java代码解析Scala类时遇到了问题(但不是相反,这要归功于可用的漂亮插件)。有办法解决它们吗?

注意:我可以从命令行构建就好了; Scala类在Java类之前编译。我只是希望IDE能够识别这一点。我可以为Scala类创建一个单独的模块来解决这个问题,但对我来说似乎有些过分。

注意:在IDEA中,我有“首先编译Scala类”,但仍然无法解决问题。

更新:以下是我正在使用的版本: scala-library 2.8.0 maven-scala-plugin 2.12 IDEA 9.0 Ultimate带有来自插件回购的最新scala插件 Netbeans 6.9 with scala nightly plugin

2 个答案:

答案 0 :(得分:1)

您使用的是哪些版本(Scala,IDE,Scala插件)​​?

我在9个月前开始使用Scala 2.7时遇到了同样的问题。虽然我最近没有尝试过混合项目,但我的理解是这些问题将在Scala 2.8中得到解决。使用Scala 2.8尝试Eclipse 3.5.2可能是值得的 - 我的印象是Eclipse插件跟上2.8的变化比其他IDE插件更好(但我可能错了)。

答案 1 :(得分:1)

我一直试图弄清楚如何使用Eclipse Indigo + Scala IDE 2.9,m2eclipse,scala 2.9 + jdk1.7混合使用。

我发现使用maven eclipse插件(mvn eclipse:eclipse)并将项目作为eclipse项目(不是maven项目)导入,并使用以下自定义清理错误标记。

<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.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>

    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/main/scala</source>
                </sources>
            </configuration>
        </execution>
        <execution>
            <id>add-test-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/test/scala</source>
                </sources>
            </configuration>
        </execution>
    </executions    
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.8</version>

    <configuration>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>true</downloadJavadocs>
        <projectnatures>
            <projectnature>org.scala-ide.sdt.core.scalanature</projectnature>
            <projectnature>org.eclipse.jdt.core.javanature</projectnature>
        </projectnatures>
        <buildcommands>
            <buildcommand>org.scala-ide.sdt.core.scalabuilder</buildcommand>
        </buildcommands>
        <classpathContainers>
            <classpathContainer>org.scala-ide.sdt.launching.SCALA_CONTAINER"</classpathContainer>
            <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
        </classpathContainers>
        <excludes>
            <exclude>org.scala-lang:scala-library</exclude>
            <exclude>org.scala-lang:scala-compiler</exclude>
        </excludes>
        <sourceIncludes>
            <sourceInclude>**/*.scala</sourceInclude>
            <sourceInclude>**/*.java</sourceInclude>
        </sourceIncludes>
    </configuration>
</plugin>