【问题标题】:How can I add Gradle managed dependencies to my classpath using SublimeLinter-javac?如何使用 SublimeLinter-javac 将 Gradle 托管依赖项添加到我的类路径?
【发布时间】:2017-12-23 15:21:15
【问题描述】:

我正在尝试为我的 Java 项目设置 linting。我正在使用 Sublime Text 3 进行编码并使用 Gradle 从命令行构建。我的问题是我找不到将依赖项从 Gradle 添加到类路径以便 SublimeLinter3 识别它们的方法。我尝试添加位于 ~/.gradle/cache 的缓存,但这似乎不起作用。这真的可能吗,还是我正在尝试做一些无法做到的事情?

【问题讨论】:

  • 这篇文章怎么样? stackoverflow.com/questions/28843983/…
  • 感谢您的回复!我以前看过那个帖子,并认为我已经尝试了一切。问题是包含外部库的文件夹真的很长。我能够使依赖项之一工作,但类路径是~/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.8.8/bf88c7b27e95cbadce4e7c316a56c3efffda8026/jackson-databind-2.8.8.jar。我正在研究通配符,因此我可以在该模块文件夹中包含所有内容,但我不确定 SublimeLinter 是否支持。

标签: java gradle sublimetext3 sublimelinter


【解决方案1】:

由于 SublimeLinter-javac 底层使用 javac 进行 linting README reflinter.py,您只需配置 -cp 参数以包含类路径目录 ("/gradle/cache/path/*")。

注意,您需要使用 Java 6 或更高版本才能对类路径使用通配符选项。

"javac": {
    "lint": "all",
    "args": [
        "-encoding", "UTF8",
         "-cp", "/gradle/cache/path/*",
        "-sourcepath", "${project}/src/"
    ]
}

让我知道这是否有效。

[更新]

Setting the class path的“Understanding class path wildcards”部分,详细说明如下(即不会处理嵌套文件夹):

不递归搜索子目录。例如, foo/* 看起来 仅适用于 foo 中的 JAR 文件,而不适用于 foo/bar、foo/baz 等中。

【讨论】:

  • 那行不通。我试过这样做,但所有外部 jar 都在嵌套文件夹中(/.gradle/caches/modules-2/files-2.1/com.amazonaws/aws-java-sdk-s3/1.11.164/v132459u2gm2vu2iwb56/aws-java -sdk-s3-sources.jar)。我最终创建了 2 个 gradle 任务。我将在下面发布我的解决方案。
  • 任何错误信息?我认为通配符可以处理嵌套文件夹。
  • 没有错误消息,因为我所做的只是将上述类路径放入并检查更改是否突出显示。我实际上不确定通配符是否会处理嵌套文件夹。是否需要其他一些参数才能发生这种情况?
  • 很遗憾你不能使用**
  • 你可以在下面看到我的答案 :) 我能够使用 -d 参数将所有类文件放在一个文件夹中,该文件夹也被 git 忽略!
【解决方案2】:

我最终不得不创建 2 个单独的 Gradle 任务:一个将我的依赖项收集到一个文件夹中,另一个构建我的测试 jar。这样我可以将具有外部依赖项的文件夹添加到类路径和具有我的构建和测试 jar 的文件夹(用于内部依赖项解析)。以下是 Gradle 任务:

`task copyLibs(type: Copy) {
    from configurations.testRuntime.files
    into "$buildDir/lib"
}
task testJar(type: Jar, dependsOn: testClasses) {
    classifier = 'tests'
    from sourceSets.test.output
}`

执行这些任务后,我可以添加通过将其放入我的 sublime-project 文件中创建的 jar:

"SublimeLinter": {
    "linters": {
        "javac": {
            "lint": "all",
            "args": [
                "-sourcepath", "/home/griff/orch_engine/src/",
                "-cp", "/home/griff/project/build/lib/*:/home/griff/project/build/libs/*"
            ]
        }
    }
},

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多