【问题标题】:scala maven plugin not packaging scala files into jarscala maven插件没有将scala文件打包到jar中
【发布时间】:2017-01-11 07:42:51
【问题描述】:

我是 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 编译的类。

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

【问题讨论】:

标签: java scala maven jar


【解决方案1】:

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>

【讨论】:

    【解决方案2】:

    您可以尝试这样的事情,而是使用“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>
    

    【讨论】:

      猜你喜欢
      • 2018-11-26
      • 2016-01-23
      • 2017-08-07
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2017-05-27
      相关资源
      最近更新 更多