Java 如何让gradle下载库

Java 如何让gradle下载库,java,gradle,Java,Gradle,我正在学习Java“艰难之路”,意思是没有任何IDE。相反,我依靠gradle和我的文本编辑器。A此时,我的项目如下所示: ├── build.gradle └── src ├── main │   └── java │   └── CliOptionsTryout.java build.gradle的内容: apply plugin: 'java' repositories { jcenter() } dependencies { comp

我正在学习Java“艰难之路”,意思是没有任何IDE。相反,我依靠gradle和我的文本编辑器。A此时,我的项目如下所示:

├── build.gradle
└── src
    ├── main
    │   └── java
    │       └── CliOptionsTryout.java
build.gradle的内容:

apply plugin: 'java'

repositories {
    jcenter()
}

dependencies {
    compile 'commons-cli:commons-cli:1.4'
    compile 'org.slf4j:slf4j-api:1.7.22'
    testCompile 'junit:junit:4.12'
}
ClioptionsTryyout.java的内容:

import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;


public class CliOptionsTryout {
    public static void main(String[] args) {
        Options options = new Options();  // <=== FAILED HERE
        options.addOption("h", "help", false, "show help.");
        options.addOption("v", "var", true, "Here you can set parameter .");
    }
}

我知道原因是它找不到commons cli库。因此,问题是,我如何告诉gradle下载并安装这个库?

因为您可以在堆栈跟踪中读取,Java可执行文件找不到类
org.apache.commons.cli.Options
。此类是您正在使用的依赖项的一部分

执行
java clioptions试用时,java可执行文件将查找二进制文件(.class文件在当前文件夹中)。您会收到一个错误,因为Gradle没有获取
clioptions试用.class
文件所在文件夹中的依赖项(JAR文件)

如果希望成功运行类,则需要告诉Java可执行文件在何处找到包含所使用库的
.class
文件的JAR文件

默认情况下,Gradle获取
$HOME/.Gradle/..
中的所有JAR依赖项。缺少的依赖项是1.4版中的Apache commons CLI。下面是定位精确路径的命令:

find $HOME/.gradle -name "commons-cli-1.4.jar"
例如,我得到以下信息:

$HOME/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.4/c51c00206bb913cd8612b24abd9fa98ae89719b1/commons-cli-1.4.jar

获得依赖项JAR文件的路径后,可以使用
java
命令和
-cp
选项来扩展类路径。类路径用于告诉在哪里可以找到第三方二进制文件:

java -cp $HOME/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.4/c51c00206bb913cd8612b24abd9fa98ae89719b1/commons-cli-1.4.jar:.  CliOptionsTryout

在现实世界中,我建议为您的应用程序生成一个JAR文件(包括所有依赖项),并使用
java-JAR
直接执行该文件。如果你有兴趣学习如何做,请看一下

正如您可以在堆栈跟踪中读取的那样,Java可执行文件找不到类
org.apache.commons.cli.Options
。此类是您正在使用的依赖项的一部分

执行
java clioptions试用时,java可执行文件将查找二进制文件(.class文件在当前文件夹中)。您会收到一个错误,因为Gradle没有获取
clioptions试用.class
文件所在文件夹中的依赖项(JAR文件)

如果希望成功运行类,则需要告诉Java可执行文件在何处找到包含所使用库的
.class
文件的JAR文件

默认情况下,Gradle获取
$HOME/.Gradle/..
中的所有JAR依赖项。缺少的依赖项是1.4版中的Apache commons CLI。下面是定位精确路径的命令:

find $HOME/.gradle -name "commons-cli-1.4.jar"
例如,我得到以下信息:

$HOME/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.4/c51c00206bb913cd8612b24abd9fa98ae89719b1/commons-cli-1.4.jar

获得依赖项JAR文件的路径后,可以使用
java
命令和
-cp
选项来扩展类路径。类路径用于告诉在哪里可以找到第三方二进制文件:

java -cp $HOME/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.4/c51c00206bb913cd8612b24abd9fa98ae89719b1/commons-cli-1.4.jar:.  CliOptionsTryout

在现实世界中,我建议为您的应用程序生成一个JAR文件(包括所有依赖项),并使用
java-JAR
直接执行该文件。如果你有兴趣学习如何做,请看一下

使用应用程序插件,让gradle为您生成一个应用程序(包括所有必要的依赖项、启动脚本等)。我喜欢@JBNizet的建议,它对我很有用。谢谢。使用应用程序插件,让gradle为您生成一个应用程序(包括所有必要的依赖项、启动脚本等)。我喜欢@JBNizet的建议,它对我很有用。非常感谢。