Gradle -Sqlj插件配置

时间:2018-05-08 03:18:40

标签: java maven gradle sqlj

我已经将我的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。

如果需要做任何其他事情,请告诉我。

2 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

不幸的是我看不到官方支持的sqlj ant任务,有人发布了一个ant任务str.count的源代码,所以有一个选项是使用here

来包装它

看一下Maven插件的源代码,似乎大多数逻辑都在Gradle's ant integration方法中调用time =['87:38:00','51:48:00','26:05:00','10:04','69:21:00','66:56:00','47:12:00'] time = pd.Series(time) m = time.str.count(':') == 2 time1 = pd.to_timedelta('00:' + time.mask(m, time.str.replace(':00$', ''))) print (time1) 0 01:27:38 1 00:51:48 2 00:26:05 3 00:10:04 4 01:09:21 5 01:06:56 6 00:47:12 dtype: timedelta64[ns] 。我注意到Maven任务中的逻辑只更新了已更改的文件,这可以通过translate

在Gradle中完成

希望这有助于您入门