用maven构建一个scala应用程序(将java源代码混合在一起)
我有一个应用程序,我想混合使用Java和Scala源代码(实际上它将一个java应用程序迁移到scala--但每次都是这样)。
我可以在IDE中完成这项工作,很好,非常好。 但我不知道如何用maven做到这一点 - scalac可以编译java和scala交织在一起,但是如何为模块设置maven?
另外,我的Scala源必须是不同的文件夹到Java?
使用maven scala插件,像下面这样的配置可以用于混合了java和scala源代码的项目(scala源当然会在/ scala目录中,正如其他人所提到的那样)。
你可以运行运行mvn编译,测试等等,并且它将正常工作。 非常好(它会自动运行scalac)。
对于一个伟大的IDE,IntelliJ 8可以很好地工作:添加scala插件,然后添加一个scala facet,然后调整scala的编译设置以便首先运行scalac(如果你有scala和java源的循环依赖关系,则为critical)。
<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>
是的,scala部分必须位于单独的模块和src/main/scala
目录中。 Maven认为像这样的混合来源是异端邪说。
通过导入scala maven插件来启用scala编译。 “用法”页面就是一个很好的例子。
我曾经问过关于如何在Maven项目中包含非Java代码的非常类似的问题。 答案的要点是在每个编程语言的src下有一个不同的目录,并找到/编写一个Maven插件,它可以知道如何处理每个插件。 例如:
src/
|-- main
| |-- bin
| |-- sh
| |-- sql
| |-- scala
| |-- java
| `-- resources
|-- site
...
链接地址: http://www.djcxy.com/p/66613.html
上一篇: Building a scala app with maven (that has java source mixed in)