Gradle添加依赖及使用注解(添加插件)

简介: 一、基于Gradle可以构建很多项目,下面以Kotlin项目为例package com.reflectionsimport sun.

一、基于Gradle可以构建很多项目,下面以Kotlin项目为例

package com.reflections

import sun.management.Agent

/**
 * @author:wangdong
 * @description:反射
 */

/**定义一个person类*/
//通过poko注解生成无参构造的方法
//@Noarg
class Person(val name:String,val age: Int)   //默认是没有无参构造的

class DefaultConstructor()    

fun main(args: Array<String>) {
    //拿到class的2种方式
    //1.
    val clazz = Person::class.java
    //new一个person实例
    //2.
    val person = Person("wangdong",23)
    val clazz2 = person.javaClass
    val clazz3 = person::class.java

    val defaultConstructor = DefaultConstructor::class.java.newInstance()
    val person2 = clazz2.newInstance()   //这个在没有添加@Noarg注解是不行的
}

二、在运行这个main方法的时候,会报异常
原因是Person类默认情况下是没有无参构造的

Exception in thread "main" java.lang.InstantiationException: com.reflections.Person
    at java.lang.Class.newInstance(Class.java:427)
    at com.reflections.JavaReflectionsKt.main(JavaReflections.kt:28)
Caused by: java.lang.NoSuchMethodException: com.reflections.Person.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.newInstance(Class.java:412)
    ... 1 more

三、在Gradle项目中引入插件并定义注解,以kotlin-noarg插件为例
改写build.gradle文件

buildscript {
    ext.kotlin_version = '1.2.30'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        //1.添加一个无参构造的插件
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

group 'net.kotlinreflects.com'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'kotlin'
//2.引用无参构造
apply plugin: 'kotlin-noarg'

//3.配置注解,用来给class生成默认无参的方法的
noArg{
//配置类的路径
    annotations "com.reflections.Noarg"
}
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

四、根据build.gradle类中的路径,写一个注解类
这里写图片描述

package com.reflections

/**
 * @author:wangdong
 * @description:配置一个注解
 */

annotation class Noarg

五、使用注解
将第一步中的注解开启

@Noarg
class Person(val name:String,val age: Int)   //默认是没有无参构造的

六、运行main方法
好了,就不会报错了,就完成了

目录
相关文章
|
7月前
|
SQL 人工智能 移动开发
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
|
7月前
|
Java 开发工具 Android开发
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
199 1
|
7月前
|
安全 Cloud Native Go
解决Gradle依赖问题:不安全协议的处理策略Could not resolve all dependencies for configuration ‘:detachedConfiguration9
解决Gradle依赖问题:不安全协议的处理策略Could not resolve all dependencies for configuration ‘:detachedConfiguration9
372 0
|
5月前
|
Java 关系型数据库 MySQL
Gradle中的依赖Dependencies说明与使用总结
Gradle中的依赖Dependencies说明与使用总结
124 0
|
5月前
|
存储 缓存 Java
Gradle笔记 八 Gradle 插件(二)
Gradle笔记 八 Gradle 插件
71 0
|
5月前
|
Java
Gradle笔记 八 Gradle 插件(一)
Gradle笔记 八 Gradle 插件
81 0
|
6月前
|
Java Maven Android开发
android之gradle配置仓库与引入依赖
android之gradle配置仓库与引入依赖
279 0
|
6月前
gradle依赖冲突的解决方式
gradle依赖冲突的解决方式
|
7月前
|
Java 数据库连接 API
Gradle依赖管理:编译时和运行时依赖的区别
Gradle依赖管理:编译时和运行时依赖的区别
50 0
|
10月前
|
缓存 数据可视化 Java
Gradle 构建工具 #5 又冲突了!如何理解依赖冲突与版本决议?
Gradle 作为官方主推的构建系统,目前已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等。可见,要成为 Android 高级工程师 Gradle 是必须掌握的知识点。
134 0
Gradle 构建工具 #5 又冲突了!如何理解依赖冲突与版本决议?