尽管路径上的Maven无法运行程序“ mvn”

问题描述 投票:1回答:1

将其标记为重复之前,请仔细阅读。我正在执行的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 []

将其标记为重复之前,请仔细阅读。我正在执行的gradle任务(kotlin dsl)正在子目录中执行maven命令。奇怪的是我在PATH变量上有一个专家……

maven gradle
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.