Solon v3.0.6

问题:编译保持参数名不变-parameters?

</> markdown

这是个常见问题:java 编译时,默认会把参数名变掉(arg0, arg1...)。想要保持不变,则需要添加编译参数 -parameters。使用 solon-parent 作 parent,会自动添加相关配置,可避免此问题。

<!-- 注意:引入 solon-parent,可省去很多细节配置 -->
<parent>
    <groupId>org.noear</groupId>
    <artifactId>solon-parent</artifactId>
    <version>3.0.6</version>
    <relativePath />
</parent>

如果不方便引入 parent,可参考下面手动开启编译参数!最好在 parent 模块配置,否则需要每个模块添加。

1、Java 项目

  • Java maven 项目
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <compilerArgument>-parameters</compilerArgument> 
        <source>${java.version}</source>
        <target>${java.version}</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>
  • Java gradle 项目
compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-parameters"
}

2、Kotlin 项目

  • kotlin maven 项目
<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <configuration>
        <args>
            <arg>-java-parameters</arg>
        </args>
    </configuration>
</plugin>
  • Kotlin gradle 项目

在 build.gradle 的 compileKotlin 配置:

compileKotlin {
    kotlinOptions {
        jvmTarget = '1.8' 
        javaParameters = true //保持参数名不变
    }
}

3、如果不想启用编译参数?

可以使用 @Param(name)@Path(name) 等注解(不同的框架也会有类似的注解),来指定参数名字。

如果量大的话,还是开启 -parameters 更方便。