Доступ к свойствам Ant в функции Gradle Task / Groovy? - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь использовать функцию ant.uptodate в функции gradle, чтобы проверить, изменились ли некоторые файлы.

task generateXMLBeans {
    ant.uptodate(property: "xsdFileChanges", targetfile: "lib/xmlBeans.jar") {
            srcfiles(dir: 'protocol') {
                include(name: '*.xsd')
            }
    }
    if(ant.properties.xsdFileChanges == "false") {
        ant.taskdef(name: 'xmlbean', classname: 'org.apache.xmlbeans.impl.tool.XMLBean',
            classpath: configurations.xmlbeans.asPath)
            ant.xmlbean(
                javasource: "1.5", 
                failonerror: "true",
                fork: "yes",
                memoryMaximumSize: "512M",
                memoryInitialSize: "64M",
                destfile: "lib/xmlBeans.jar",
                classpath: configurations.xmlbeans.asPath){
                    fileset(dir: 'protocol') {
                        include(name: '*.xsdconfig')
                        include(name: 'hmiprotocol.xsd')
                    }
                }    
    }
}

Но переменная ant.properties.xsdFileChanges равна null.

Я пытался поместить функцию ant.uptodate в отдельную функцию с тем же результатом.

Когда я вызываю задачу с функцией --debug, я вижу, что муравей Функция .uptodate обычно работает.

14:40:50.947 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:uptodate] hmiprotocol_systemlog.xsd omitted as D:\workspace_201912\ProjectX\lib\xmlBeans.jar is up to date.
14:40:50.948 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:uptodate] hmiprotocol_testdetails.xsd omitted as D:\workspace_201912\ProjectX\lib\xmlBeans.jar is up to date.

Кто-нибудь знает, как правильно получить доступ к свойству ant?

1 Ответ

0 голосов
/ 14 февраля 2020

Это не связано с использованием Ant из Gradle; это просто свойство Ant uptodate. Указанное свойство не установлено на false, если файл не обновлен. Это просто не установлено вообще. Несколько других задач Ant, таких как condition, используют это же соглашение.

Быстрый пример, который вы можете попробовать с самим Ant, учитывая, что в файле есть файл build. xml и build.gradle. тот же каталог:

<target name="default">
    <uptodate property="uptodate1" targetfile="build.xml" srcfile="build.gradle" />

    <echo>${uptodate1}</echo>

    <uptodate property="uptodate2" targetfile="build.gradle" srcfile="build.xml" />

    <echo>${uptodate2}</echo>
</target>

Вывод (может быть изменен в зависимости от времени изменения):

default:
     [echo] true
     [echo] ${uptodate2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...