Как правильно включить загружаемый двоичный файл в качестве зависимости Gradle? - PullRequest
0 голосов
/ 02 февраля 2019

(примечание: мне известно о JitPack , но, похоже, он поддерживает только файлы .jar и .aar, а не прямые двоичные файлы или исполняемые файлы)

Я создаюшаблон проекта, который зависит от ряда сторонних библиотек, большинство из которых доступны в Maven Central.Но есть также несколько двоичных файлов командной строки, которые существуют либо в общедоступном Git, но и в другом стабильном URL-адресе.

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

Я не планирую делать шаблон проекта доступным через Maven, и я не хочу загружать сторонние двоичные файлы вХранилище Maven.Вместо этого я хочу, чтобы потребители моего шаблона загружали двоичные файлы при сборке или запуске.

Я обнаружил плагин gradle-download-task и смог преобразовать его в зависимость с помощью следующего.

// build.gradle

plugins {...}

def downloadXXX() {
   mkdir 'bin'
   download {
      src 'https://github.com/.../tagged_release/xxx.exe'
      dest 'bin'
      onlyIfModified true      
   }
   return files("bin/xxx.exe")
}

...
dependencies {
    testImplementation ...
    implementation ...

    implementation downloadXXX()

}

Кажется, это работает.Наличие двоичного файла проверяется на задачах компиляции / сборки и загружается, если оно отсутствует или устарело, но оно пахнет неправильно .Хотя я новичок в Gradle, мне кажется, что я должен создать загрузочную задачу , а не просто функцию, или делать что-то еще полностью.

Я знаю, что не используя Maven IЯ пожертвую большим количеством встроенной поддержки управления версиями, но меня больше интересует а) декларация / отображение зависимостей проекта в одном месте и б) предоставление пользователям моего шаблона возможности выполнять установку в один кликнасколько это возможно.

Есть ли лучший способ?

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