添加到pom.xml
的以下插件允许在执行mvn package
时创建source-jar:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
scala-maven-plugin
的用法是:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArgs>
<jvmArg>-Xmx12g</jvmArg>
</jvmArgs>
<args>
<arg>-feature</arg>
<arg>-deprecation</arg>
<arg>-target:jvm-1.7</arg>
</args>
</configuration>
</plugin>
但是只包含java
个来源:scala来源被遗漏了。请注意,我们使用的是标准的maven目录布局。特别是我们在这里有scala来源:
src/main/scala
那么 - maven-source-plugin
还有其他选项可以鼓励它邀请scala课程参与吗?或者使用不同的scala特定插件和/或选项来获取它们?
答案 0 :(得分:3)
jar
的Maven Source Plugin目标会将Maven项目的所有来源捆绑到JAR中。您可以选择要在这些源文件夹中包含或排除的内容(使用includes
和excludes
参数),但不能向其添加全新的源文件夹;它们必须作为Maven项目本身的源文件夹添加。
当您有pure Scala project时,src/main/scala
和src/test/scala
被声明为源文件夹,因为您将拥有:
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
在您的POM中,覆盖默认src/main/java
和src/test/java
。因此,Maven Source Plugin会正确添加这两个文件夹中的源代码而无需额外配置。
但如果您有mixed Java / Scala project,则<sourceDirectory>
和<testSourceDirectory>
元素通常会保留为默认值。这对于使用插件编译或运行Scala代码没有任何问题,因为它在${project.build.sourceDirectory}/../scala
中默认查找文件。但是,其他不相关的Maven插件无法知道这些新文件夹。
要解决此问题,该插件会提供add-source
目标,该目标会将src/main/scala
和src/test/scala
作为源和测试源目录添加到Maven项目中,从而使它们可用于其他插件依赖于源目录,如Maven Source Plugin。因此,您应该将POM更改为:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<!-- rest of configuration -->
</plugin>