我已经将我的maven构建项目转换为gradle,现在我们在maven中使用的插件之一是SQLj插件。 sqlj插件具有其他配置,该配置从特定的文件夹路径获取源(.sqlj)文件,然后将它们编译为.java和.ser特定的目标目录。

我不确定在gradle构建中配置它。
您能帮我如何在build.gradle文件中编写此配置吗?

我只包含了从mvncentral获得的gradle的依赖项行。

// https://mvnrepository.com/artifact/org.codehaus.mojo/sqlj-maven-plugin
编译组:“org.codehaus.mojo”,名称:“sqlj-maven-plugin”,版本:“1.3”

但是它只是不从特定文件位置编译新的.sqlj。
我已经包括了像
applyplugin:java和maven。

让我知道是否需要做其他事情。

最佳答案

您可以使用source code from the maven plugin作为开发Gradle任务的指南。这是一个简单的起点

class SqljTask extends DefaultTask {
    @Input
    String encoding
    @Input
    List<String> additionalArgs = []
    @InputDirectory
    File sqljDir
    @OutputDirectory
    File generatedJava
    @OutputDirectory
    File generatedResources

    @TaskAction
    void generate() {

        project.mkdir generatedJava
        project.mkdir generatedResources

        project.fileTree(sqljDir).visit { FileVisitDetails fvd ->
           if (!fvd.directory) {
               List<String> sqljArgs = []
               sqljArgs << "-dir=$generatedJava"
               sqljArgs << "-d=$generatedResources"
               sqljArgs << "-encoding=$encoding"
               sqljArgs << "-compile=false"
               sqljArgs << fvd.file.absolutePath
               sqljArgs.addAll(additionalArgs)
               int result = sqlj.tools.Sql.statusMain(sqljArgs as String[])
               if (result != 0) throw new RuntimeException("Can't translate $fvd.file ($returnCode)"
           }
        }
    }
}

在build.gradle中的用法
apply plugin: 'java'

task sqlj(type: SqljTask) {
    encoding = 'UTF-8'
    additionalArgs = ['-status']
    sqljDir = file('src/main/sqlj')
    generatedJava = file("$buildDir/sqlj/java")
    generatedResources = file("$buildDir/sqlj/resources")
}

compileJava.dependsOn sqlj

sourceSets {
    main {
        java {
            srcDir sqlj.generatedJava
        }
        resources {
            srcDir sqlj.generatedResources
        }
    }
}

注意:仅当自上次成功运行以来任务输入/输出发生更改时,此任务才会运行。因此,如果自上次构建以来未进行任何更改,它将被视为UP-TO-DATE

10-04 11:22