如何将Scala源代码附加到我的Maven JAR包中?

4
我有一个项目,其中包含混合使用Java和Scala代码,并使用Maven进行依赖管理和构建。我使用maven-source-plugin来构建源代码JAR文件,并将其上传到我的Maven镜像中。对于Java源文件(位于src/main/java),这很有效,但是对于Scala源文件(位于src/main/scala),则无法正常工作。
我在scala-maven-plugin网页上没有找到任何帮助,但我可能错过了某些东西。难道不能在JAR文件中附加Scala源文件吗?
需要注意的是,所有类文件都存在,因此依赖库可以正常工作,只是缺少Scala源文件。
1个回答

7

我有一个类似的问题;我已经成功添加了maven-source-plugin,但是还是遇到了问题。

[INFO] --- maven-source-plugin:3.0.0:jar (attach-sources) @ foo-bar ---
[INFO] No sources in project. Archive not created.

当我编译我的Scala项目时出现了问题。

为了解决这个问题,我在我的scala-maven-plugin配置中添加了add-source目标,例如:

<plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>scala-maven-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>scala-compile-first</id>
            <phase>process-resources</phase>
            <goals>
                <goal>compile</goal>
                <goal>add-source</goal>
            </goals>
        </execution>
        ...
    </executions>
    ...
</plugin>

这会将您的Scala源代码添加到pom中,从而允许maven-source-plugin找到源文件并将其放在源jar中。
另请参见http://davidb.github.io/scala-maven-plugin/add-source-mojo.html

这是完美的解决方案!非常感谢!(抱歉回复晚了,直到现在我才有时间测试它) - Mats Rydberg
4
我发现我需要移除 <goal>compile</goal>(反正我已经在另一个执行中进行编译了),而且我也不需要 <phase>process-resources</phase>。值得强调的是,maven-source-plugin 仍然需要存在。 - Jim Pivarski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接