gradle - 在Gradle中的doLast中调用Ant任务

标签 gradle

我正在按照https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:up_to_date_checks创建一个任务,如果输入保持不变,该任务将不会生成代码。

问题是,我无法在doLast中调用hbm2java之类的Ant任务。 dependsOn不适合这种情况,因为无论输入条件如何,它始终运行。

有人知道吗?

这是示例:

task helloGen {
  ext.srcFile = file('src/main/resources/com/bt/nmdb/entities')
  ext.destDir = new File(buildDir, 'generated/src/main/java/')
  inputs.file srcFile
  outputs.dir destDir
  doLast {
    println "Transforming source file."
    hbm2java // <- An Ant task which cannot be called somehow
  }
}

最佳答案

好。我找到了更好的解决方案。与其调用ant任务,不如在doLast闭包内定义ant任务。

所以...代替:

doLast {
  hbm2java
} 

最好使用:
doLast {
    ant.taskdef(name: 'hibernateTool',
      classname: 'org.hibernate.tool.ant.HibernateToolTask',
      classpath: configurations.hibernateTool.asPath) {
    }
    ant.hibernateTool(destdir: "$buildDir/generated/src/main/java/") {
      configuration(propertyFile: "$projectDir/src/test/resources/hibernate.properties") {
        fileSet(dir: "$projectDir/src/main/resources/") {
          include(name: "**/*.hbm.xml")
        }
      }
      classpath { 
        pathElement(path: "$projectDir/src/main/resources/")
        pathElement(path: "$buildDir/generated/")
      }
      hbm2java(jdk5: true)
    }
  } 

关于gradle - 在Gradle中的doLast中调用Ant任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577654/

相关文章:

maven - 您可以在gradle包装器中构建Maven项目吗

java - 如何在 IntelliJ Idea 中的新 Gradle 项目中配置默认​​依赖项

java - 在已经检测过的文件上从 gradle 运行 jacoco

java - Gradle:无法创建 AppPlugin 类型的插件

java - Cucumber-jvm线程安全吗?

android - 使用 TFS 和 Gradle 构建 Android 项目

gradle - 无法将 admob 添加到 libgdx 项目

git - 如何在Jenkins中更改构建开始文件夹

java - 无法扫描jar文件:错误的魔数(Magic Number)

gradle - 为什么某些gradle任务无法访问?