问题:编译保持参数名不变-parameters?
这是个常见问题: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
更方便。