Gradle эквивалент Maven "копии-зависимости"?

В Maven-land, в любое время я хочу просто вывести транзитивные зависимости для конкретного POM файла, я просто открываю оболочку, перебираюсь туда, где находится POM, и запускаю:

mvn dependency:copy-dependencies

И стрела, Maven создает каталог target/ внутри текущего и помещает все транзитные JAR файлы в это место.

Теперь я пытаюсь переключиться на Gradle, но Gradle, похоже, не имеет такой же функции. Поэтому я спрашиваю: Имеет ли Gradle эквивалент Maven copy-dependencies?. Если да, может ли кто-нибудь предоставить пример? Если нет, другие разработчики посчитают это полезным вкладом в сообщество Gradle?

Ответ 1

В Gradle нет эквивалента copy-dependencies, но здесь есть задача, которая это делает:

apply plugin: 'java'

repositories {
   mavenCentral()
}

dependencies {
   compile 'com.google.inject:guice:4.0-beta5'
}

task copyDependencies(type: Copy) {
   from configurations.compile
   into 'dependencies'
}

Стоит ли делать вклад? Как видите, это действительно легко сделать, поэтому я так не думаю.

EDIT

От Gradle 4+ это будет:

task copyDependencies(type: Copy) {
  from configurations.default
  into 'dependencies'
}

Ответ 2

конфигурация зависимостей компиляции устарела в Gradle 4.x. Вы должны заменить это по умолчанию. Таким образом, приведенный выше фрагмент кода становится:

dependencies {
  implementation 'com.google.inject:guice:4.0-beta5'
}
task copyDependencies(type: Copy) {
  from configurations.default
  into 'dependencies'
}

Ответ 3

Это эквивалентная версия Kotlin DSL (добавлен префикс buildDir, чтобы он копировал зависимости в папке сборки):

task("copyDependencies", Copy::class) {
    from(configurations.default).into("$buildDir/dependencies")
}