gpt4 book ai didi

gradle - 有没有办法使gradle项目的配置为零?

转载 作者:行者123 更新时间:2023-12-03 05:27:42 24 4
gpt4 key购买 nike

在我的项目中,需要实现“零配置”。这对p.o意味着什么是有一个命令可以配置整个项目,而另一个命令可以启动整个项目。
我在软件开发方面相对较新,尤其是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和springboot,但是该任务从未完成,因此只能启动其中一个。
是否可以通过./gradlew build命令以某种方式安装angular,springboot和node.js或其他减少所需命令数量的方法?任何帮助将不胜感激。

最佳答案

可以通过添加Gradle Node Plugin并将其用于Node和NPM安装(仅使用configureProject任务)来增强npmSetup任务。然后,可以使用NPM来安装Angular CLI,随后可以使用package.json脚本来运行ng serve。最后,看起来您不是在这里使用Spring Boot CLI。您确定需要吗?

如果您对Node / NPM / Angular CLI进行了上述更改并删除了Spring Boot CLI的用法,那么您的配置任务将大大简化。

对于运行应用程序,Gradle实际上是其核心的构建工具(或任务运行器)。并不是要同时为多个应用程序组合执行。 bootRun和长时间运行的NPM任务是可行的,但是通常每个Gradle实例只能运行其中的一个,因为Gradle每个项目仅支持一个同时执行的任务。

从技术上讲,可以使用Gradle运行多个应用程序,但是您必须将它们与Gradle进程(https://stackoverflow.com/a/47202438/1941654)分开,或者使用Gradle Worker API。您应该能够通过worker API提交所有要执行的应用程序到工作队列,但是请记住,这将是一个非常手动的解决方案,不是Gradle的目的,并且会有一些限制。例如,您必须确保您有足够的Gradle工作程序来运行所需的所有并发应用程序。

如果您要同时运行多个应用程序,则可能需要考虑使用其他一些工具。例如,如果要通过IntelliJ运行此程序,则可以创建一个共享的“复合运行配置”来运行这两个任务。如果您是在开发环境之外运行此程序,则可以考虑使用Docker Compose。

关于gradle - 有没有办法使gradle项目的配置为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60656852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com