当前位置:嗨网首页>书籍在线阅读

19-无参编译器插件

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.5.2 无参编译器插件

无参编译器插件可以为具有特定注解的类生成一个零参数构造函数。因为生成的构造函数是合成的,所以不能在Java或Kotlin代码中直接调用,但可以使用反射调用。

和全开放插件的集成方式一样,无参编译器插件也提供了Gradle和Maven两种IDE集成方式。

1.Gradle方式集成

Gradle方式集成的脚本配置如下。

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}
apply plugin: "kotlin-noarg"

或者使用Gradle插件方式集成。

plugins {
  id "org.jetbrains.kotlin.plugin.noarg" version "1.2.20"
}

使用时,在noArg标签下指定无参注解列表即可,如果希望在合成的构造函数中运行其初始化逻辑,需将invokeInitializers选项设置为true。

noArg {
    annotation("com.my.Annotation")
    invokeInitializers = true    //合成函数中初始化
}

2.Maven方式集成

Maven方式集成无参编译器插件的脚本如下。

noArg {
<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <configuration>
        <compilerPlugins>
            <plugin>no-arg</plugin>
        </compilerPlugins>
        <pluginOptions>
            <option>no-arg:annotation=com.my.Annotation</option>
            <!-- 在合成的构造函数中调用实例初始化器 -->
            <!-- <option>no-arg:invokeInitializers=true</option> -->
        </pluginOptions>
    </configuration>
    //…
</plugin>

3.JPA方式

与kotlin-spring插件类似,kotlin-jpa插件是对no-arg插件的进一步包装。目前,该插件支持@Entity、@Embeddable和@MappedSuperclass等无参注解,该插件的Gradle集成方式如下。

//kotlin-jpa插件
apply plugin: "kotlin-jpa"
//DSL方式
plugins {
  id "org.jetbrains.kotlin.plugin.jpa" version "1.2.20"
}

在Maven项目中,则需要添加如下JPA插件配置。

<compilerPlugins>
    <plugin>jpa</plugin>
</compilerPlugins>

4.在命令行中使用

与全开放编译插件类似,命令行中使用无参编译器插件的命令如下。

-Xplugin=$KOTLIN_HOME/lib/noarg-compiler-plugin.jar
-P plugin:org.jetbrains.kotlin.noarg:annotation=com.my.Annotation
-P plugin:org.jetbrains.kotlin.noarg:preset=jpa