2016-09-03 77 views
1

我是maven的新手,目前正在嘗試組裝一個scala項目。項目結構:scala maven插件沒有將scala文件打包成罐子

dir 
| 
|--src/main/java 
| 
|--src/main/scala 
| 
|--pom.xml 

我是那種驚訝的是,從*.java編譯的類罐中結束了,但一個從*.scala編譯沒有。我添加了這些插件pom.xml

<plugins> 
    <plugin> 
     <groupId>net.alchim31.maven</groupId> 
     <artifactId>scala-maven-plugin</artifactId> 
     <version>3.1.3</version> 
    </plugin> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <classpathPrefix>lib/</classpathPrefix> 
        <mainClass>HelloWorld</mainClass> 
       </manifest> 
      </archive> 
     </configuration> 
    </plugin> 
</plugins> 

我雖然maven-jar-plugin負責組裝jar文件。但由於某些原因,它不會添加scala編譯的類。

問:誰執行mvn install後加.class文件到最終jar?如何添加用scala編譯器編譯的文件.class

+0

你閱讀斯卡拉Maven插件的文件? http://davidb.github.io/scala-maven-plugin/example_compile.html –

+0

它是'mvn package',而不是'mvn install' –

+0

這也可能有所幫助:http://docs.scala-lang.org/教程/斯卡拉與 - maven.html – Samar

回答

0

mvn package會構建你的jar,但是maven-compiler-plugin只會編譯你的java源文件而不是你的scala源文件。 Scala-maven-plugin可用於編譯java和scala源碼。

我寫了這個在不久前一篇博客文章,可以幫助http://blog.rizvn.com/2016/04/scala-and-maven.html

你需要告訴的src/main/Scala的行家,因爲你是在src/main/java下把你的Scala代碼。這是通過構建部分完成的,像這樣:

<build> 
    <sourceDirectory>src/main/scala</sourceDirectory> 
    <testSourceDirectory>src/test/scala</testSourceDirectory> 
... 
</build> 
0

你可以嘗試這樣的事情,使用「斯卡拉,Maven的插件」來代替。然後執行maven的目標:mvn clean package

<build> 
<sourceDirectory>${basedir}/src</sourceDirectory> 
<resources> 
    <resource> 
     <directory>${basedir}/src/test/resources</directory> 
    </resource> 
</resources> 
<plugins> 
    <plugin> 
     <groupId>net.alchim31.maven</groupId> 
     <artifactId>scala-maven-plugin</artifactId> 
     <version>${scala-maven-plugin.version}</version> 
     <configuration> 
      <sourceDir>${basedir}/src</sourceDir> 
      <outputDir>${basedir}/target/classes</outputDir> 
     </configuration> 
     <executions> 
      <execution> 
       <id>scala-compile-first</id> 
       <phase>process-resources</phase> 
       <goals> 
        <goal>compile</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
</plugins>