使用classpath中的文件时,Gradle中的增量编译无法正常工作

时间:2014-04-01 11:33:40

标签: gradle dependency-management incremental-build

我正在尝试为我们的项目为类似maven的依赖管理构建某种支持。 为此,我将要继承的pom添加为buildscript中的类路径依赖项。我写了一个插件,它添加了一个“继承”任务,它将一个文件作为输入并解析它并将来自该pom的依赖项放入一个映射中。该任务在插件的apply方法中启动,我从类路径获取pom。

static class InheritDependencyTask extends DefaultTask {

    @InputFile
    File pomForInheritance

   @Input
   def dependencyMap

    @TaskAction
    public void processPom(){

        def parsedPom = new XmlSlurper().parse(pomForInheritance)
        parsedPom.dependencyManagement.dependencies.dependency.each { dependency ->
            def key = dependency.groupId.text() + ":" + dependency.artifactId.text()
            String version = dependency.version.text()

            if (version.contains("\$")) {
                String propertyKey = version.replace("\${", "").replace('}', '')
                version = parsedPom.properties.getAt(propertyKey)
            }
            dependencyMap.put(key, version)
        }
    }

}

在插件的apply方法中,我添加了任务,并使用以下命令进行编译:

project.compileJava.dependsOn("inherit")
           project.task("inherit", type: InheritDependencyTask){
                dependencyMap =  project.dependencyMap
                pomForInheritance = project.buildscript.configurations.classpath.find { File dependency -> (dependency.name.contains(MY_ARTIFACT_ID) )}
            }

在某些其他方面,我遍历我的依赖项并根据我从pom中获取的版本更改版本。

这一切似乎都有效。但compileJava永远不会是最新的。它总是要重新编译。我做错了什么或者没有看到classpath文件没有改变?

此致 ·阿尔

0 个答案:

没有答案