添加到pom.xml中的以下插件允许在执行mvn package时创建源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的插件和/或选项,让他们上船?
发布于 2016-11-11 19:05:32
jar的Maven源插件目标将将Maven项目的所有源绑定到一个JAR中。您可以选择在这些源文件夹中包含或排除什么(带有includes和excludes参数),但不能向其中添加整个新的源文件夹;必须将它们作为Maven项目本身的源文件夹添加。
当您有一个纯Scala项目时,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插件可以正确地添加这两个文件夹中的源代码,而不需要额外的配置。
但是,当您有一个Java / Scala混合项目时,<sourceDirectory>和<testSourceDirectory>元素通常保留到它们的默认值。这不会在使用插件编译或运行Scala代码方面产生任何问题,因为它在默认情况下在${project.build.sourceDirectory}/../scala中查找文件。但是,其他不相关的Maven插件不可能知道这些新文件夹。
为了解决这个问题,插件提供了add-source目标,它将src/main/scala和src/test/scala作为源代码和测试源目录添加到Maven项目中,从而使它们可以用于依赖源目录的其他插件,比如Maven源代码插件。因此,应将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>https://stackoverflow.com/questions/40553948
复制相似问题