美文网首页
gradle自动生成java类

gradle自动生成java类

作者: 感召的鳞 | 来源:发表于2020-07-10 20:34 被阅读0次

    1.引入avapoet用来生成java类

    implementation 'com.squareup:javapoet:1.9.0'
    

    2.注册插件

    class CreateJavaPlugin implements Plugin<Project> {
    
        @Override
        void apply(Project project) {
            project.afterEvaluate {
                DefaultDomainObjectCollection<BaseVariant> variants
                if (project.plugins.hasPlugin(AppPlugin.class)) {
                    variants = project.android.applicationVariants
                } else if (project.plugins.hasPlugin(LibraryPlugin.class)) {
                    variants = project.android.libraryVariants
                } else {
                    return
                }
                variants.all { variant ->
                        def task = project.tasks.create("create${variant.name.capitalize()}JavaTask",
                                CreateJavaTask.class)
                        //注册生成java类的task,指定生成地址,需要和task中写入java的地址一致
    //                    variant.registerJavaGeneratingTask(task,new File(project.buildDir, "generated/source/container"))
                        variant.registerJavaGeneratingTask(task, new File(project.projectDir, "src/main/java"))
                }
    
            }
        }
    
    }
    

    3.生成java的task

    class CreateJavaTask extends DefaultTask {
    
        @TaskAction
        void doTask() {
            //生成java类
            TypeSpec.Builder builder = TypeSpec.classBuilder("TestJava")
                    .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
            JavaFile javaFile = JavaFile.builder("com.test.sdk", builder.build()).build()
            //将java写入到文件夹下
    //        File file = new File(project.buildDir, "generated/source/container")
            File file = new File(project.projectDir, "src/main/java")
            if (!file.exists()) {
                file.mkdirs()
            }
            javaFile.writeTo(file)
            println "[write to]: ${file.absolutePath}"
        }
    
    }
    

    相关文章

      网友评论

          本文标题:gradle自动生成java类

          本文链接:https://www.haomeiwen.com/subject/jncvcktx.html