使用Maven,Java中是否有可能通过IDE解析Scala类?

3

我有一个包含Java和Scala源代码的项目,按照这个页面上的说明,可以在命令行中使用Maven运行。

然而,在使用IDE(如IDEA和Netbeans)时,人们可能会遇到在Java代码中解析Scala类的问题(但反过来不会,因为有很好的插件可用)。 有没有办法解决这个问题?

注意:我可以从命令行构建,Scala类是在Java类之前编译的。 我只想让IDE也能识别它。 我可以创建一个单独的模块来解决这个问题,但对我来说似乎太麻烦了。

注意:在IDEA中,我已经勾选了“先编译Scala类”,但这仍然不能解决问题。

更新:我使用的版本是: scala-library 2.8.0 maven-scala-plugin 2.12 IDEA 9.0 Ultimate,最新的scala插件来自插件存储库 Netbeans 6.9,带有scala nightly插件

2个回答

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>

1

你使用的Scala版本(包括IDE和Scala插件)是哪些?

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


没错。Eclipse 3.5.2与Scala 2.8配合得很好。我可以在Java代码中解析Scala类。谢谢! - retiman
@retiman 我想知道使用 IDEA 的 EAP 版本是否可行。最近我将一个 2.7.7 代码库移植到了 2.8,切换到 EAP 版本解决了我很多问题。 - Aaron Novstrup
@RavishBhagdev 这个问题/答案已经过时了。我建议您发布自己的问题以获得更及时的答案。 - Aaron Novstrup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接