gpt4 book ai didi

scala - 在 maven 包生成的源 jar 中包含 scala 类

转载 作者:行者123 更新时间:2023-12-04 02:33:25 25 4
gpt4 key购买 nike

以下插件添加到 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 的插件和/或选项来让他们加入?

最佳答案

jar Maven Source Plugin的目标将 Maven 项目的所有源代码捆绑到一个 JAR 中。您可以选择在这些源文件夹中包含或排除的内容(使用 includes excludes 参数),但不能向其中添加全新的源文件夹;它们必须作为 Maven 项目本身的源文件夹添加。

当您有 pure Scala project , src/main/scalasrc/test/scala被声明为源文件夹,因为您将拥有:

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

在你的 POM 中,覆盖默认值 src/main/javasrc/test/java .因此,Maven 源插件将正确添加这两个文件夹中存在的源,而无需额外配置。

但是当你有一个 mixed Java / Scala project , <sourceDirectory><testSourceDirectory>元素通常保留为其默认值。这不会对使用插件编译或运行 Scala 代码产生任何问题,因为它默认在 ${project.build.sourceDirectory}/../scala 中查找文件。 .但是,其他不相关的 Maven 插件无法知道这些新文件夹。

为了解决这个问题,插件提供了 add-source 目标,增加了 src/main/scalasrc/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>

关于scala - 在 maven 包生成的源 jar 中包含 scala 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40553948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com