gpt4 book ai didi

maven - 尽管Maven在路径上,但无法运行程序 “mvn”

转载 作者:行者123 更新时间:2023-12-03 03:17:06 25 4
gpt4 key购买 nike

在将此标记为重复之前,请仔细阅读。
我正在执行的gradle任务(kotlin dsl)正在子目录中执行maven命令。奇怪的是,我在System和User的PATH变量上都拥有maven。如果我使用CMD或git bash导航到该目录,则可以执行任何maven命令。
因此,根本不在环境变量中就不会成为问题。实际上,在每个通过代码执行mvn命令的项目中,我都会遇到这个问题。

fun cmd(vararg args: String, directory: File, printToStdout: Boolean = false): Pair<Int, String?> {
val p = ProcessBuilder()
.command(*args)
.redirectErrorStream(true)
.directory(directory)
.start()
val output = p.inputStream.bufferedReader().use {
val lines = LinkedList<String>()
it.lines().peek(lines::add).forEach { line ->
println(line)
}
lines.joinToString(separator = "\n")
}
val exit = p.waitFor()
return exit to output
}


像这样调用它:

cmd("mvn", "install:install-file", "-q", "-Dfile=${project.projectDir.resolve("work/1.15.2-mojang-mapped.jar").absolutePath}", "-Dpackaging=jar", "-DgroupId=me.minidigger", "-DartifactId=minecraft-server", "-Dversion=\"$minecraftversion-SNAPSHOT\"", directory = project.projectDir)

结果是:
java.io.IOException: Cannot run program "mvn" (in directory "....."): CreateProcess error=2, Das System kann die angegebene Datei nicht finden

编辑:它不应该是代码,因为其他人没有这个问题。
我正在使用Windows 10

更新:,因此似乎在手动调用“mvn”时有效,但如果从代码中调用,则必须为“mvn.bat”。但是,被迫手动更改并检查代码中的代码似乎不是最佳解决方案。尤其是因为某些调用mvn的代码已在任务中下载,因此之前无法手动进行编辑

最佳答案

检查ProcessBuilder.environment显示为可用变量的内容。您可能必须自己定义这些变量。

关于maven - 尽管Maven在路径上,但无法运行程序 “mvn”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62084055/

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