Есть ли способ сделать нулевую конфигурацию проекта gradle, как? - PullRequest
0 голосов
/ 12 марта 2020

В моем проекте это требование для достижения "нулевой конфигурации". Для ПО это означает, что есть одна команда, которая настраивает весь проект, и другая команда, которая запускает весь проект. Я относительно новичок в разработке программного обеспечения, особенно с Gradle. Вот мой код, что я и сделал:

def frontendDir = "$projectDir/src/main/resources/assets/anwboard-frontend/"
task configureProject(type:Exec) {

    workingDir "$frontendDir"
    inputs.dir "$frontendDir"
    def angularVersion = commandLine "ng", "--version"
    def springbootVersion = commandLine "spring", "version"
    def nodeVersion = commandLine "node", "-v"

    if (nodeVersion == null) {
        if (System.getProperty("os.name").toUpperCase().contains("WINDOWS")) {
            commandLine "choco", "install", "node.jsinstall"
        }else {
            commandLine "brew", "install", "node"
        }
    }

    if (angularVersion == null) {
        if (System.getProperty("os.name").toUpperCase().contains("WINDOWS")) {
                commandLine "npm", "install", "@angular/cli"
        } else {
            commandLine "npm", "install", "angular"
        }
    }

    if (springbootVersion == null) {
        if (System.getProperty("os.name").toUpperCase().contains("WINDOWS")) {
                    commandLine "choco", "install", "spring-boot-cli"
        }else {
                    commandLine "brew", "tap", "pivotal/tap"
                    commandLine "brew", "install", "springboot"
        }
    }
}

task buildAngular(type:Exec) {
    workingDir "$frontendDir"
    inputs.dir "$frontendDir"
        commandLine "ng", "serve", "-o"
}

task buildSpringboot(type:Exec){
    workingDir "$projectDir"
    inputs.dir "$projectDir"
        commandLine "./gradlew", "bootRun"
}

Теперь роуминг сказал: «Определенно есть лучший способ решить эту проблему», но я не знаю, я искал везде, но без результата. Я попытался запустить angular и прыгнуть с помощью одной команды, но задача так и не была выполнена, поэтому он запускает только одну из них. Есть ли способ каким-либо образом установить angular, springboot и node.js с помощью команды сборки ./gradlew или каким-либо другим способом уменьшить количество необходимых команд? Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 марта 2020

Задачу configureProject можно улучшить, добавив плагин Gradle Node и используя его для установки Node и NPM (просто используйте задачу npmSetup). NPM затем можно использовать для установки Angular CLI, а затем для запуска ng serve можно использовать сценарий package.json. Наконец, не похоже, что вы используете Spring Boot CLI здесь. Вы действительно нуждаетесь в этом?

Если вы сделаете вышеуказанные изменения для CLI Node / NPM / Angular и удалите использование CLI Spring Boot, то ваша задача настройки значительно упростится.

Для запуска приложений Gradle на самом деле является инструментом сборки (или, наоборот, средством выполнения задач). Это на самом деле не предназначено для составления исполнения для нескольких приложений одновременно. Возможны bootRun и долгосрочные NPM задачи, но обычно только одна из них может выполняться на экземпляр Gradle, поскольку Gradle поддерживает только одно одновременное выполнение задачи для проекта.

Технически возможно запустить несколько приложений с Gradle, но вам придется либо отсоединить их от процесса Gradle ({ ссылка }), либо использовать Gradle Worker API . Вы должны иметь возможность отправлять все приложения для выполнения в рабочую очередь через рабочий API, но имейте в виду, что это будет довольно ручное решение, а не то, для которого предназначен Gradle, и у него будут некоторые ограничения. Например, вы должны убедиться, что у вас достаточно сотрудников Gradle для запуска всех необходимых вам одновременных приложений.

Если у вас есть несколько приложений, которые вы хотите запускать одновременно, то вы можете рассмотреть возможность использования некоторых других приложений. инструменты. Например, если вы запускаете это через IntelliJ, вы можете создать общую конфигурацию Compound Run Configuration, которая выполняет обе задачи. Если вы используете это вне среды разработки, то вы можете рассмотреть возможность использования Docker Compose.

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