将 Gradle 依赖项保存到目录

Tre*_*yes 5 java intellij-idea gradle

如何将模块的所有依赖 jars 保存到目录中?我有一个在 IntelliJ IDEA 中运行的应用程序,但我想在另一台计算机上运行它,因此我需要将所有 JAR 文件复制到那里。

Szy*_*iak 5

首先,请考虑使用 Gradle(或 Gradle Wrapper)来做这样的事情,比如在另一台计算机上获取/下载项目的依赖项。但是,如果出于任何其他原因需要复制依赖项,则可以定义类似于以下内容的任务:

task copyDependencies(type: Copy) {
    from configurations.runtime
    into "lib"
}
Run Code Online (Sandbox Code Playgroud)

当你运行时:

gradle copyDependencies
Run Code Online (Sandbox Code Playgroud)

运行时依赖项将被复制到一个lib/文件夹中。

例子

构建.gradle

apply plugin: 'groovy'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.1'
    compile group: 'com.h2database', name: 'h2', version: '1.4.196'

    testCompile group: 'org.spockframework', name: 'spock-core', version: '1.1-groovy-2.4'

}
task copyDependencies(type: Copy) {
    from configurations.runtime
    into "lib"
}
Run Code Online (Sandbox Code Playgroud)

命令:

gradle copyDependencies
Run Code Online (Sandbox Code Playgroud)

lib/目录包含:

lib
??? groovy-all-2.3.11.jar
??? h2-1.4.196.jar
??? jackson-core-2.9.1.jar
Run Code Online (Sandbox Code Playgroud)

使用 Gradle 包装器

正如我之前提到的,请考虑使用Gradle Wrapper,这样您就不必担心是否在另一台计算机上安装了 Gradle 发行版。如文档中所述,您可以轻松添加 Gradle Wrapper,然后您可以运行

./gradlew [task]
Run Code Online (Sandbox Code Playgroud)

通过使用包装器而不是安装在操作系统上的 Gradle。在你的情况下运行

./gradlew build 
Run Code Online (Sandbox Code Playgroud)

将下载所有依赖项并构建项目。这比手动复制依赖要好得多,Gradle 就是为我们而发明的。