【问题标题】:gradle set external classpathgradle 设置外部类路径
【发布时间】:2014-10-13 13:15:33
【问题描述】:

我想通过将类路径导出到 $CLASSPATH 来与外部应用程序 (VIM) 共享 gradle 创建的类路径。我已经尝试通过调用 gradle 并设置变量在 shell 中执行此操作,但是有一堆额外的输出使这很麻烦。我还通过 gradle 脚本查看了 shelling 命令,但这似乎创建了一个新的 shell 实例,因此不会影响当前 shell 的环境变量。

有没有人有过这方面的经验?感谢您的帮助!

我认为一个例子将有助于澄清:

task classpath {
    classpathcmd = "export CLASSPATH=" + sourceSets.test.runtimeClasspath.asPath
    // Prints too much extra text
    println classpathcmd
    // Executes command in another shell instance so the variable is "lost"
    exec {
        executable = "sh"
        args = classpathcmd
    }
    // Stracktrace because of file not found exception
    exec {
        commandLine classpathcmd
    }
 }

【问题讨论】:

    标签: java gradle classpath


    【解决方案1】:

    您可以为此编写一个任务并调用它(可能使用--quiet),或者使用 Gradle 工具 API(可能来自 vim 插件)。

    【讨论】:

    • --quiet 仍然会打印出许多需要 awk 或 grep 解析的额外文本。我写了一个任务,但似乎没有向当前 shell 发送命令。我尝试了“commandLine”功能,但它需要一个文件目标,因此发送“export”命令会导致找不到文件。
    • 不确定您说的是哪个commandLine 函数。如果发送到 stdout 没有减少它,那么将它发送到一个文件。或者编写一个使用 Gradle 工具 API 的 vim 插件(但这需要更多的努力)。
    • 我认为写入文件会起作用。如果没有更优雅的解决方案,我会接受这个作为答案。至于工具 api,我可以走这条路,但 VIM 只支持 Cruby 和 Cpython 开箱即用,以桥接到 JVM 可能是一项艰巨的任务。
    • 出于您提到的原因,我认为炮轰不会让您有任何收获。 (FWIW,任务声明不正确;它的整个主体必须​​用doLast {} 包裹。但这并不能解决手头的问题。)
    • 写入文件最终成为解决方案。我使用了一个 vim 脚本 sn-p,它在为 javacomplete.vim 插件设置类路径的目录中加载了一个“.vimrc.local”。我将此任务添加为 vim sn-p,以便我可以将其放入构建脚本中。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2012-02-18
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多