scala maven插件没有将scala文件打包成jar

时间:2016-09-03 09:00:06

标签: java scala maven jar

我是maven的新手,目前正尝试用它组装一个scala项目。项目结构:

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

我很惊讶从*.java编译的类最终在jar中,但是从*.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编译的类。

问题: 在执行.class后,谁将jar文件添加到最终mvn install?如何添加.class - 用scala编译器编译的文件?

2 个答案:

答案 0 :(得分:0)

mvn package将构建你的jar,但是maven-compiler-plugin只会编译你的java源文件而不是你的scala源文件。 Scala-maven-plugin 可用于编译java和scala源代码。

我刚才写了一篇博文,这可能有助于http://blog.rizvn.com/2016/04/scala-and-maven.html

你需要告诉maven关于src / main / scala,因为你将scala代码放在src / main / java下。这是通过构建部分完成的,如下所示:

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

答案 1 :(得分:0)

你能尝试使用“scala-maven-plugin”这样的东西。然后执行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>