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

18-全开放编译插件

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

3.5.1 全开放编译插件

Kotlin的默认类和方法都是final的,使用诸如Spring AOP这样的第三方框架的时候,直接为类添加open属性并不是很方便,all-open编译器插件则可以满足框架的这些需求。例如,使用Spring框架时,如果不需要编译所有的类,那么只需要使用特定的注解在需要开放编译的地方添加标注即可。

要想在项目中使用这些特殊的注解标注,首先必须配置all-open编译器插件环境,全开放编译插件提供Gradle和Maven两种IDE集成方式。

1.Gradle方式集成

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

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

还可以使用plugins块方式集成。

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

然后,再将需要开放的类添加到allOpen脚本配置中。代码如下。

allOpen {
     annotation("com.my.Annotation")
 …
}

此时,如果类或者超类使用com.my.Annotation注解,那么该类及其所有的成员将变为开放。

2.Maven方式集成

Maven是Apache组织下一个跨平台的项目管理工具,主要用来实现项目的构建、测试、打包和部署。Maven集成全开放的脚本配置如下。

<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <configuration>
        <compilerPlugins>
            <plugin>all-open</plugin>
        </compilerPlugins>
        <pluginOptions>
            <!-- 每个注解都放在其相应的行上 -->
            <option>all-open:annotation=com.my.Annotation</option>
            <option>all-open:annotation=com.their.AnotherAnnotation</option>
        </pluginOptions>
    </configuration>
    //…
</plugin>

3.命令行中使用all-open插件

除了IDE集成方式,全开放编译器插件还提供JAR包方式依赖。如果采用命令方式编译Kotlin项目,则可以使用kotlinc命令的Xplugin选项来提供该JAR文件的路径。

-Xplugin=$KOTLIN_HOME/lib/allopen-compiler-plugin.jar

然后,使用annotation插件或者启用“预设”来直接指定需要全开放注解的范围。当前,能提供全开放的唯一预设是spring。

-P plugin:org.jetbrains.kotlin.allopen:annotation=com.my.Annotation
-P plugin:org.jetbrains.kotlin.allopen:preset=spring