Gradle:path或baseDir都可以为null或空字符串

Gradle:path或baseDir都可以为null或空字符串,gradle,pdflatex,gradle-plugin,Gradle,Pdflatex,Gradle Plugin,我曾尝试构建一个插件,使用gradle运行pdflatex(以及稍后的bibtex) 不幸的是,我遇到了一个我不理解的错误:path和baseDir都不能为null或空字符串。path='null'basedir='/home/me/paper' 这是我的身材。格雷德尔: apply plugin: LaTeXPlugin project.latex{ documentBase = "research_paper" cookDir = "cooked" jobname

我曾尝试构建一个插件,使用gradle运行pdflatex(以及稍后的bibtex)

不幸的是,我遇到了一个我不理解的错误:path和baseDir都不能为null或空字符串。path='null'basedir='/home/me/paper'

这是我的身材。格雷德尔:

apply plugin: LaTeXPlugin

project.latex{
    documentBase = "research_paper"
    cookDir = "cooked"
    jobname = "job"
    pdflatexargs = ["-synctex=1", "-interaction=nonstopmode", "-shell-escape"]
    rawDir = "."
}


class LaTeXPlugin implements Plugin<Project>{
    @Override
    void apply(Project project){
        project.extensions.create("latex", LaTeXPluginExtension)

        def pdflatex = "pdflatex"
        def bibtex = "bibtex"

        project.task("pdfLaTeX", type:Exec){
            doFirst {
                println "CookDir $project.latex.cookDir"
                println "PdfLaTeX $project.latex.jobname"
                println "args: " + project.latex.pdflatexargs
                println "docBase: " + project.latex.documentBase
                println "rawDir:" + project.latex.rawDir
                println "path: $project.path"
                println "$project.rootDir"
            }

            outputs.dir(project.latex.cookDir)
            outputs.upToDateWhen{false}

            commandLine =[pdflatex] + project.latex.pdflatexargs + ["-jobname=$project.latex.jobname", "-output-directory=$project.latex.cookDir"] + [project.latex.documentBase + '.tex']
            doLast{
                println "PdfLaTeX done."
            }
        }
    }
}

class LaTeXPluginExtension {
    String documentBase
    String jobname
    String[] pdflatexargs
    String cookDir
    String rawDir
}
希望你们中的一位能给我指出正确的方向。 提前感谢。

发现了错误

出于某种原因,格雷德尔不喜欢:

outputs.dir(project.latex.cookDir)

删除它后,我只需修复一些范围错误,而不是编写新插件并显式执行所有配置。您可以尝试新的gradle插件来运行latex:

outputs.dir(project.latex.cookDir)