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

时间:2019-07-03 08:17:29

标签: java gradle google-api google-api-java-client google-tasks-api

我想制作一个可执行文件,该文件将自动创建带有相关任务的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上的“启用GOOGLE TASKS API”,下载并替换credentials.json中的./src/main/resources/文件。

    • 如果要确认该程序正常运行,请将终端/ cmd设置为项目的根目录,然后输入gradle run
  3. 在项目的根目录下,输入grade jar。这将在./src/build/libs/文件夹中创建一个罐子

  4. ./src/build/libs/文件夹中,运行java -jar demo-1.0.jar

这时,您将得到上面提到的错误。

1 个答案:

答案 0 :(得分:3)

您似乎想要的是所谓的“超级” jar(也包含其依赖项的jar)

您可以通过以下方式实现

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