`gradle jar`, похоже, не добавляет зависимости в файл jar - PullRequest
0 голосов
/ 03 июля 2019

Я хочу создать исполняемый файл, который автоматически создаст список задач Google со связанными задачами.

Однако сейчас я пытаюсь просто создать исполняемый файл, используя код по умолчанию, который Google предоставляет здесь .После добавления файла credentials.json (поясняется ниже) и ввода gradle run (в предоставленном репо) в терминал / cmd он будет работать так, как ожидается.

Однако, если вы запустите gradle jar для создания jar, вы получите эту ошибку при попытке запустить jar:

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


Как воспроизвести

  1. Клон Этот репозиторий
  2. Загрузите и замените файл credentials.json, расположенный в ./src/main/resources/, нажав кнопку «ВКЛЮЧИТЬ API GOOGLE TASKS» на этой странице .

    • Если вы хотите подтвердить, что программа работает, установите ваш терминал / cmd в корневой каталог проекта и введите gradle run
  3. ВнутриВ корне проекта введите grade jar.Это создаст банку в папке ./src/build/libs/

  4. Внутри папки ./src/build/libs/, запустите java -jar demo-1.0.jar

В этот момент вы получите ошибкуупоминалось выше.

1 Ответ

3 голосов
/ 03 июля 2019

Похоже, вы хотите получить так называемый «uber» jar (jar, который также содержит свои зависимости)

Вы можете сделать это

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