Использование Ant taskdef и loaderref в сборке Gradle - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть сборка Ant, и я бы хотел перейти на Gradle.В сборке Ant используются несколько пользовательских задач.Ant build.xml выглядит как

<project name="proj" basedir=".">
    <property name="abc.path" value="lib/abc-ant.jar"/>
    <taskdef resource="com/abc/antlib.xml" classpath="${abc.path}" loaderref="abc"/>
</project>

, а файл antlib.xml в банке выглядит как

<antlib>
    <taskdef name="abc-server" loaderref="abc" classname="com.abc.ant.Server"/>
    <taskdef name="abc-export" loaderref="abc" classname="com.abc.ant.Export"/>
    <taskdef name="abc-import" loaderref="abc" classname="com.abc.ant.Import"/>
</antlib>   

Важным является loaderref, так как abc-export и abc-import задачи вызывают abc-server внутри.Мой build.gradle выглядит как

apply plugin: 'groovy'

ant.property(name: 'abc.path', value: 'lib/abc-ant.jar')

ant.taskdef(resource: "com/abc/ant/antlib.xml", classpath: ant.properties['abc.path'], loaderref: 'abc')

task server(group: "abc") {
    doLast {
        ant.abc-server(id: "id", url: 'https://www.example.com/', user: 'user@abc.com', password: 'xxx')
    }
}

Сборка gradle инициализируется нормально, но запуск server завершается с ошибкой типа:

> No such property: abc for class: org.gradle.api.internal.project.DefaultAntBuilder

Я перепробовал всевиды комбинаций пути Ant и идентификаторов ссылок и передачи загрузчика классов проекта Ant в качестве loaderref.Я также попытался импортировать всю сборку Ant с

ant.importBuild('build.xml') { antTargetName ->
    'ant-' + antTargetName
}

Но не повезло.Кто-нибудь знает, как заставить это работать?

1 Ответ

0 голосов
/ 11 сентября 2018

Я бы сказал, что это строка

ant.abc-server(...)

Как и в Java, имена методов Groovy не могут содержать символ "-".

Опция 1, удалить тире

<taskdef name="abcServer" loaderref="abc" classname="com.abc.ant.Server"/>

ant.abcServer(...)

Вариант 2, заключите имя метода в кавычки

ant.'abc-server'(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...