的pom.xml:
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<!-- see http://davidb.github.com/scala-maven-plugin -->
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<args>
<arg>-dependencyfile</arg>
<arg>${project.build.directory}/.scala_dependencies</arg>
</args>
</configuration>
</execution>
</executions>
</plugin>
代码结构:
src/main/java
Hello.java
src/main/scala #will reference the class under /src/main/java
App.scala
IDE:Intellij IDEA 2017.2.1,JDK:java8
问题: 当我通过intellij运行maven编译时,它总是显示以下错误,这意味着它无法找到Hello.class。
问题:
为什么这个pom.xml不起作用?我检查了scal-maven-plugin的文档,布局应该有效,但事实并非如此。
我发现如果我通过build-helper-maven-plugin将src / main / java添加为源目录,它将会起作用。这可以解释第一个问题,但我意识到在maven编译之前,我通过Intellij运行App.scala,所以Hello.java已经编译成类,我可以在src / main / target /下看到它课程。那么为什么scala-maven-plugin在src / main / target / classes下找不到类?
答案 0 :(得分:1)
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
在双混合java / scala中(scala依赖于java和java依赖于scala),scala编译器针对java源运行,而不是来自二进制。
如果你想&#34;通知&#34; scala源代码的IDE在src /.../ scala&#34;下添加&#34;
<goal>add-source</goal>
请参阅add-source