Как создать запись контейнера .classpath (все зависимости в кэше gradle) для проекта Java в vscode с использованием затмения gradle? - PullRequest
0 голосов
/ 24 мая 2019

Я использую VSCode для проекта Java, и мне кажется, что если нет файла .classpath, VSCode не найдет правильный путь зависимостей и выдаст ошибки.Поэтому я использовал gradle eclipse для его генерации.

Основной .classpath файл, сгенерированный gradle eclipse, показан следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="bin/main" path="src/main/resources">
        <attributes>
            <attribute name="gradle_scope" value="main"/>
            <attribute name="gradle_used_by_scope" value="main,test"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="bin/test" path="src/test/java">
        <attributes>
            <attribute name="gradle_scope" value="test"/>
            <attribute name="gradle_used_by_scope" value="test"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="bin/test" path="src/test/resources">
        <attributes>
            <attribute name="gradle_scope" value="test"/>
            <attribute name="gradle_used_by_scope" value="test"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
</classpath>

После добавления некоторых зависимостей в build.gradle язапустите gradle build и gradle eclipse, файл .classpath будет восстановлен со всеми добавленными мною зависимостями, но они отображаются следующим образом:

<classpathentry kind="lib" path="C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.hadoop/hadoop-client/3.2.0/64e71497e5cb87e3cae9063d9899bc102c540384/hadoop-client-3.2.0.jar" sourcepath="C:/Users/xiaohu10/.gradle/caches/modules-2/files-2.1/org.apache.hadoop/hadoop-client/3.2.0/948488c756ae3707ce143f98e930f678e434291c/hadoop-client-3.2.0-sources.jar">
...

Мы можем заметить, что gradle использует абсолютный путьвсе зависимости с жестким кодом, что приводит к очень большому файлу .classpath.

Я хочу сделать то же самое, что и запись JRE, используя контейнер <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>.

Может ли gradle определитьclasspath container который содержит все зависимости из кэша gradle?Так же, как buildship делает на затмении <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>

Спасибо ~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...