Mic*_*ale 63 java maven-2 scala
我有一个应用程序,我希望混合Java和Scala源(实际上它将Java应用程序迁移到scala - 但有时一点).
我可以在IDE中使这项工作很好,非常好.但是我不知道怎么用maven做这个 - scalac可以编译java和scala交织在一起,但是如何为模块设置maven?
另外,我的scala源是否必须是与java不同的文件夹?
Mic*_*ale 39
使用maven scala插件,如下所示的配置将适用于混合java和scala源的项目(scala源当然位于/ scala目录中,如其他人所述).
你可以运行运行mvn编译,测试等...它将全部正常工作.非常好(它会自动运行scalac).
对于一个出色的IDE,IntelliJ 8可以很好地工作:添加scala插件,然后添加一个scala facet,然后调整scala的编译设置以首先运行scalac(如果你有scala和java源的循环依赖关键,则很关键).
<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>demo</groupId>
<artifactId>scala-java-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>scala-java-app</name>
<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>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<phase>compile</phase>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>test-compile</phase>
</execution>
<execution>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
sbl*_*ndy 12
是的,scala部分必须位于单独的模块和src/main/scala目录中.Maven认为像这样的混合来源是异端邪说.
您可以通过导入scala maven插件来启用scala编译.在"用法"页作为一个很好的例子.
我曾经问过一个非常类似的问题,关于如何在Maven项目中包含非Java代码.答案的要点是在src下为每种编程语言设置一个不同的目录,并查找/编写一个知道如何处理每个编程语言的Maven插件.例如:
src/
|-- main
| |-- bin
| |-- sh
| |-- sql
| |-- scala
| |-- java
| `-- resources
|-- site
...
Run Code Online (Sandbox Code Playgroud)