`gradle jar` 似乎没有向 jar 文件添加依赖项

`gradle jar` doesn't seem to be adding dependencies to jar file

我想制作一个可执行文件,它将自动创建一个 Google 任务列表和相关任务。

然而,现在,我正在尝试使用 Google 提供的 here 的默认代码简单地创建一个可执行文件。添加 credentials.json 文件(如下所述)并在 terminal/cmd 中输入 gradle run(在我提供的存储库中)后,它将按预期工作。

但是,如果您 运行 gradle jar 创建一个 jar,当您尝试 运行 jar 时,您将得到这个错误:

java.lang.NoClassDefFoundError: com/google/api/client/json/JsonFactory


如何重现

  1. 克隆this repo
  2. 通过单击 this page 上的 "ENABLE THE GOOGLE TASKS API" 下载并替换位于 ./src/main/resources/ 中的 credentials.json 文件。

    • 如果您想确认该程序是否有效,请将您的 terminal/cmd 设置为项目的根目录并输入 gradle run
  3. 在项目的根目录中,输入 grade jar。这将在 ./src/build/libs/ 文件夹

  4. 中创建一个 jar
  5. ./src/build/libs/ 文件夹内,运行 java -jar demo-1.0.jar

此时会出现上述错误

您似乎想要所谓的 "uber" jar(也包含其依赖项的 jar)

您可以通过

jar {
   from configurations.runtime.collect { zipTree(it) } 
}