2017-10-08 42 views
1

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

回答

1

首先,请考虑使用Gradle(或Gradle Wrapper)来执行诸如在另一台计算机上获取/下载项目依赖关系等操作。当您运行

task copyDependencies(type: Copy) { 
    from configurations.runtime 
    into "lib" 
} 

:但是如果你需要复制依赖任何其他原因,你可以定义类似于任务

gradle copyDependencies 

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

的build.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" 
} 

命令:

gradle copyDependencies 

而且lib/目录包含:

lib 
├── groovy-all-2.3.11.jar 
├── h2-1.4.196.jar 
└── jackson-core-2.9.1.jar 

使用Gradle Wrapper

正如我前面提到的,请考虑使用Gradle Wrapper,因此您不必担心在另一台计算机上是否安装了Gradle分发版。如前所述​​你可以轻松地添加摇篮包装,然后你可以通过使用包装,而不是你的操作系统上安装运行摇篮

./gradlew [task] 

。在你的情况下运行

./gradlew build 

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

+0

首先,答案非常好。但我真的不明白为什么人们会继续使用像$ {project.projectDir}/lib'这样复杂的路径。任何Gradle任务的默认功能都会解释相对于项目目录的路径,所以'lib'就足够了。 –

+0

@ lu.koerfer你是对的,感谢您的输入!示例已更新。 –

+0

另外,为什么IT依赖'build'? – Opal