2015-09-08 19 views
3

我有一个Spark项目,它同时具有.scala和.java文件。我正在尝试通过Maven构建编译这两种类型的类。但是,当我运行“mvn clean install”时,它只为Java创建.class文件,而不是Scala。以下是我的pom.xml,我错过了什么?非常感谢你!Spark-maven clean install:如何编译Java和Scala类

PS。我只能通过eclipse IDE构建Scala类,但这对于自动构建而言非常不方便和不好...所以我正在使用maven命令行寻找更好的解决方案。谢谢!

<?xml version="1.0"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>my-project</groupId> 
     <artifactId>my-project</artifactId> 
     <version>1.2-SNAPSHOT</version> 
    </parent> 
    <groupId>my-project-module1</groupId> 
    <artifactId>my-project-module1</artifactId> 
    <name>my-project-module1</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>my-project</groupId> 
      <artifactId>my-project-module0</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>2.10.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.scalatest</groupId> 
      <artifactId>scalatest_2.10</artifactId> 
      <version>2.0.M5b</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.thoughtworks.xstream</groupId> 
      <artifactId>xstream</artifactId> 
      <version>1.4.4</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>nz.ac.waikato.cms.weka</groupId> 
      <artifactId>weka-stable</artifactId> 
      <version>3.6.6</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>java-cup</artifactId> 
        <groupId> 
     net.sf.squirrel-sql.thirdparty-non-maven 
    </groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>2.4.0</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>zookeeper</artifactId> 
        <groupId>org.apache.zookeeper</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>guava</artifactId> 
        <groupId>com.google.guava</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-servlet</artifactId> 
      <version>8.1.14.v20131031</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>14.0.1</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sourceforge.argparse4j</groupId> 
      <artifactId>argparse4j</artifactId> 
      <version>0.4.3</version> 
     </dependency> 
     <dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk</artifactId> 
      <version>1.9.1</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
     </dependency> 
     <dependency> 
      <groupId>com.github.scopt</groupId> 
      <artifactId>scopt_2.10</artifactId> 
      <version>3.2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-mllib_2.10</artifactId> 
      <version>1.3.1</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

是不是更好SBT斯卡拉APS? – Dici

+0

可以同时构建Java + Scala吗? – Edamame

+0

是的它可以:http://www.scala-sbt.org/0.13/docs/Java-Sources.html – Dici

回答

3

这其实很简单。你需要添加一个新的插件:

<plugins> 
... 
      <plugin> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
       <version>3.2.1</version> 
       <configuration> 
        <recompileMode>incremental</recompileMode> 
        <args> 
         <arg>-target:jvm-1.7</arg> 
        </args> 
        <javacArgs> 
         <javacArg>-source</javacArg> 
         <javacArg>1.7</javacArg> 
         <javacArg>-target</javacArg> 
         <javacArg>1.7</javacArg> 
        </javacArgs> 
       </configuration> 
       <executions> 
        <execution> 
         <id>scala-compile</id> 
         <phase>process-resources</phase> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>scala-test-compile</id> 
         <phase>process-test-resources</phase> 
         <goals> 
          <goal>testCompile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
</plugins> 

这将编译您的java和scala类在同一时间。这里有一个稍微更详细的描述:

https://itellity.wordpress.com/2014/08/21/mixing-scala-and-java-in-a-maven-project/

+0

很好地工作!非常感谢! – Edamame