2015-09-15 4 views
0

Я следую за этим https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:up_to_date_checks, чтобы создать задачу, которая не будет генерировать код, если вход остается тем же.Вызов задачи Ant внутри doLast in Gradle

Проблема в том, что я не могу назвать задачу Ant внутри doLast, как hbm2java. 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 
    } 
} 
+0

Почему вы не можете вызвать муравей задачу в 'doLast'? – Opal

ответ

0

OK. Я нашел лучшее решение. Вместо вызова муравьиной задачи лучше определить задачу муравья внутри закрытия doLast.

Итак ... Вместо того, чтобы:

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) 
    } 
    }