2015-09-08 17 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