依存 jar を特定のディレクトリ化にコピーして jar を生成する方法

以下は libs 以下に依存する jar を入れる方法

jar {
  manifest { 
    attributes "Main-Class": "$mainClassName"
  }
  zip64 = true

  def copySpec = project.copySpec {
    into "libs"

    from {
        configurations.runtimeClasspath.collect { it }
    }
  }

  with copySpec
}
$ gradle build
$ jar tvf build/libs/sample.jar
     0 Tue Jun 08 16:52:50 JST 2021 META-INF/
    64 Tue Jun 08 12:01:08 JST 2021 META-INF/MANIFEST.MF
     0 Tue Jun 08 11:51:34 JST 2021 sample/
  1275 Tue Jun 08 11:51:34 JST 2021 sample/App.class
     0 Tue Jun 08 16:52:50 JST 2021 libs/
2746681 Fri Feb 12 10:45:22 JST 2021 libs/guava-28.0-jre.jar
  4617 Wed Oct 14 19:19:36 JST 2020 libs/failureaccess-1.0.1.jar
  2199 Wed Oct 14 19:19:34 JST 2020 libs/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
 19936 Wed Oct 14 19:19:34 JST 2020 libs/jsr305-3.0.2.jar
200629 Wed Oct 14 19:19:34 JST 2020 libs/checker-qual-2.8.1.jar
 13166 Wed Oct 14 19:19:34 JST 2020 libs/error_prone_annotations-2.3.2.jar
  8781 Wed Oct 14 19:19:34 JST 2020 libs/j2objc-annotations-1.3.jar
  3448 Fri Feb 12 10:45:18 JST 2021 libs/animal-sniffer-annotations-1.17.jar