【问题标题】:Specifying Scalac Compile-Time Option with maven-scala-plugin使用 maven-scala-plugin 指定 Scalac 编译时选项
【发布时间】:2014-06-01 22:22:33
【问题描述】:

使用maven-scala-plugin 2.15.2,我试图将Scala 类文件的最大长度指定为“50”个字符。我在pom.xml 中尝试了 2 个地方:

    <build>
            <plugins>
                <plugin>
                    <groupId>org.scala-tools</groupId>
                    <artifactId>maven-scala-plugin</artifactId>
                    <version>2.15.2</version>
                    <executions>
                        <execution>
                            <id>scala-compile-first</id>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                            <phase>process-resources</phase>
                            <configuration>
                                <scalacArgs>   <-- Attempt #1 -->
                                    <scalacArg>-Xmax-classfile-name 50</scalacArg> 
                                </scalacArgs> 
                                <scalaVersion>${scalaVer}</scalaVersion>
                                <args>
                                    <arg>-make:transitive</arg>
                                    <arg>-dependencyfile</arg>
                                    <arg>${project.build.directory}/.scala_dependencies</arg>
<!-- Attempt #2 -->
                                </args>

                            </configuration>

我也运行了mvn compile -Xmax-classfile-name 50,但 Maven 无法识别该选项并失败。

在哪里可以使用maven-scala-plugin 指定此选项?

【问题讨论】:

  • maven-scala-plugin 已弃用(超过 2 年)请使用 scala-maven-plugin。 (两个插件的创建者)
  • 感谢您的提醒,大卫。并感谢插件

标签: scala maven


【解决方案1】:

configuration 中使用args 的位置应该是放置编译器参数的位置。您似乎还创建了scalacArgs,但args 被传递给了scalac。

我在我的插件中使用它来将选项传递给编译器:

<configuration> <args> <arg>-g:vars</arg> <arg>-Yrangepos</arg> <arg>-P:scoverage:dataDir:${coverage.data.dir}</arg> <arg>-Xmax-classfile-name</arg> <arg>70</arg> </args> <jvmArgs> <jvmArg>-Xms64m</jvmArg> <jvmArg>-Xmx1024m</jvmArg> </jvmArgs> <compilerPlugins> <compilerPlugin> <groupId>org.scoverage</groupId> <artifactId>scalac-scoverage-plugin_${scala.major}</artifactId> <version>${scoverage-plugin.version}</version> </compilerPlugin> </compilerPlugins> </configuration>

http://scala-tools.org/mvnsites/maven-scala-plugin/example_compile.html#Compiler_Arguments

【讨论】:

  • Maven 3 不知道如何处理 &lt;arg&gt;-Xmax-classfile-name:50&lt;/arg&gt;[ERROR] scalac 错误:错误选项:'-Xmax-classfile-name:50'。在使用空格和等于分隔符时,我也遇到了同样的错误,即选项和值之间不是:
  • Maven 只是将它们传递给 scalac。试试我更新的答案。
  • 谢谢,@monkjack。那行得通。作为一个轻微的提议编辑,-Xmax-classfile-name 的参数需要在~70 和其他一些数字之间(我不记得了)
猜你喜欢
  • 2016-12-22
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2021-03-04
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
相关资源
最近更新 更多