2017-01-18 3 views
2

У меня есть проект Java в Eclipse. Он отлично работает, и я могу запустить его из cmd с помощью java -jar sample-app.jarКак сгенерировать исполняемый файл .sh с Gradle?

Теперь мне нужно использовать Gradle для создания исполняемого файла sh для использования в Linux. Я нашел несколько ресурсов при создании сценариев запуска, но мне больше всего удалось выполнить задачу «startScripts», чтобы создать файл sample.app.bat.

Я задал вопрос после вопроса и страницы после страницы в Google, чтобы попытаться найти ответ, и мне не очень повезло. Я также читал документацию плагина приложения Gradle несколько раз и все еще довольно запутан.

Как написать задачу Gradle для создания файла sh для выполнения моего файла sample-app.jar?

Примечание: Файл sample-app.bat не выполняется. Он производит только «Ошибка: не может найти или загрузить основной класс com.sample.MainClass

ответ

2

Кажется, что упомянутый плагин application - это то, что вы ищете. Here вы можете найти небольшую демоверсию. нужно запустить gradle run. для того, чтобы подготовить ш и биту скрипты запуска Gradle gradle startScripts. для того, чтобы подготовить работоспособный (легко и Copyable) версию приложения и запускает скрипты запуска gradle distZip или gradle distTar. Обе задачи подготовят и архив, который может быть извлечен заданный каталог и запустить с подготовленным сценарием. Последняя задача gradle installDist будет готовить как скрипт, так и исполняемый банку в заданном каталоге, но без их упаковки.

Все артефакты, созданные с dist*, installDist и startScripts могут быть найдены под build. Попробуйте запустить:

gradle clean distZip distTar installDist 

, а затем tree -a build, чтобы просмотреть все приготовленные поданы.

Для запуска основного класса из подготовленной банки не забудьте выполнить сценарии оболочки в правильном каталоге, например .: build/install/lol/bin.

+0

Спасибо. Я все время создавал сценарий исполнения, просто не знал, что я это делаю. Ваш ответ, безусловно, помог мне разобраться в моем замешательстве. Очень ценим! – Afterfield

+0

Теперь я обнаружил, что все мои приложения не могут быть выполнены с использованием сгенерированного командного файла. Он работал этим утром, когда я сначала ответил, теперь это не так. С тех пор никаких изменений в коде не было. Я получаю сообщение об ошибке; Ошибка: не удалось найти или загрузить основной класс com.example.Main – Afterfield

+0

@Afterfield Я предполагаю, что все работает правильно - вы настроили основной класс? Кроме того, помните, что вам нужно запустить скрипт из действительного местоположения. – Opal

0

Существует стандартный способ Gradle, как это сделать. Вы должны начать свой gradle.build по

apply plugin: 'application' 

После этого, вы можете запустить distTar, distZip и installZip задачи. (Они лежат в папке задач distribution). Каждый из них создает в вашем проекте папку build/scripts и размещает там сценарии Windows и Linux. Кроме того, они создают установку tar/zip/folder - смотрите плагин distribution.

Обратите внимание: вам не нужно применять плагин distribution - он уже находится в плагине приложения. И плагин startScripts находится в плагине distribution.

Но ситуация не такая приятная. Вторая проблема заключается в том, что сгенерированные скрипты плохие. По крайней мере, для Windows. Таким образом, вам придется отредактировать их вручную или автоматизировать процесс в скрипте, вставленном в startScripts.Это будет выглядеть так:

startScripts { 
    doLast { 
     your script editing lines here. 
    } 
} 
Смежные вопросы