gradle: загрузка определенного файла из репозитория ivy

Мы используем внутренний репозиторий ivy и находимся в процессе отхода от ant / ivy и передачи всех задач в gradle. У меня есть репозиторий плюща, настроенный в Gradle следующим образом:

repositories {
    ivy {
        url "${ivy_repository_url}"
        layout "pattern", {
            ivy "repository/[organisation]/[module]/[revision]/[artifact].[ext]"
            artifact "repository/[organisation]/[module]/[revision]/[artifact].[ext]"
            m2compatible = true
        }
        credentials {
            username "${ivy_repository_username}"
            password "${ivy_repository_password}"
        }
    }
}

и после выполнения задачи он решает, как ожидалось, однако в некоторых случаях он удаляет все в репозитории, если соглашение об именах не совпадает, поэтому я получаю много дополнительных материалов, javadocs.zip, sources.zip и все остальное еще.

Чтобы обойти это, я хочу сначала загрузить определенные файлы jar во временную папку, а затем скомпилировать их из локального, но я не знаю, как сказать gradle, чтобы загрузить файл, имя которого отличается от имени модуля.

Пример:

ivyFiles 'net.sourceforge.jtidy: jtidy: r938 @ jar'

загружает только jtidy-r938.jar из репозитория net.sourceforge.jtidy, но что-то вроде

com.gargoylesoftware ivyFiles: htmlunit: 2.7@jar

будет извлекать htmlunit-2.7.jar, но не файл htmlunit-core-js-2.7.jar.

Если я опущу @jar, он вернется к вызову файла ivy.xml, и у меня останутся все нежелательные + зависимости, которых я пытаюсь избежать. Я безуспешно пробовал следующее

    ivyFiles ('com.gargoylesoftware:htmlunit:2.7'){
        artifact{
            name = 'htmlunit-core-js'
            type = 'jar'
        }
    }

Должен быть способ сделать это.

Спасибо


person Ed Dunn    schedule 17.01.2018    source источник


Ответы (1)


Я понял. Это то, чем я закончил

ivyFiles ('com.gargoylesoftware:htmlunit:2.7'){
    transitive = false
    artifact {
        name = 'htmlunit-core-js'
        extension = 'jar'
        type = 'jar'
    }
}

Теперь был загружен только файл htmlunit-core-js-2.7.jar.

person Ed Dunn    schedule 17.01.2018
comment
В качестве примечания: HtmlUnit 2.7 действительно устарел. Попробуйте перейти на последнюю версию. - person RBRi; 18.01.2018
comment
Да, я знаю. Прямо сейчас я просто пытаюсь отразить то, что делает наша текущая сборка муравьев. Как только я выполню эту задачу, я пойду и проверю, что все обновлено. - person Ed Dunn; 18.01.2018