`бегать по градусу` без градля - PullRequest
0 голосов
/ 27 апреля 2019

В моем Java-проекте я использую gradle для управления зависимостями. У меня есть основной класс org.myorg.MainClass, и я могу заставить его работать с gradle run.

Однако, когда я использую gradle assembly для генерации jar, я не могу заставить его работать без gradle.

java -jar assembly.jar немедленно заканчивается без результата.

Я даже добавил:

jar {
    manifest {
        attributes(
                'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                'Main-Class': 'org.myorg.MainClass'
        )
    }
}

Что помогло с файлом основного класса, но не помогло.

Мне также не нравится тот факт, что MainClass повторяется в разных частях файла Gradle - это означает, что если MainClass изменен, мне придется заменить его в нескольких местах.

1 Ответ

1 голос
/ 27 апреля 2019

Ваша основная проблема, вероятно, в том, что ваши зависимости не занесены в ваш исполняемый файл Jar, и среда выполнения не может их найти, когда пришло время выполнить код. Я размышляю только на основании того, как вы сформулировали свой вопрос.

Если я прав, то, думаю, сейчас лучше всего использовать плагин Shadow Jar (https://imperceptiblethoughts.com/shadow/introduction/)

Shadow - плагин Gradle для объединения классов и ресурсов зависимостей с проектом в один выходной Jar. Комбинированный кувшин часто называют толстяком или убер-кувшином. Shadow использует JarInputStream и JarOutputStream для эффективной обработки зависимых библиотек в выходной файл JAR без дополнительных затрат ввода-вывода при развертывании файлов JAR на диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...