Я использую Gradle и Eclipse с плагином Buildship.
Buildship создает файл .classpath
для использования Eclipse. Мне нужно, чтобы одна запись пути к классам (com.gwtplugins.gwt.eclipse.core.GWT_CONTAINER
) отображалась после записи org.eclipse.buildship.core.gradleclasspathcontainer
по причинам загрузки классов.
Таким образом, соответствующая часть моего файла .classpath
должна выглядеть так (с GWT_CONTAINER
внизу).
<classpath>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer" />
<classpathentry kind="con" path="com.gwtplugins.gwt.eclipse.core.GWT_CONTAINER"/>
</classpath>
Buildship всегда имеет gradleclasspathcontainer
на последней позиции. Поэтому я попытался изменить сортировку следующим образом в моем build.gradle
(отрывок):
eclipse {
classpath {
file {
beforeMerged { classpath ->
def gwtClasspath = classpath.entries.find { entry -> entry.path == 'com.gwtplugins.gwt.eclipse.core.GWT_CONTAINER' }
classpath.entries.remove gwtClasspath
classpath.entries << gwtClasspath
}
}
}
При использовании ./gradlew eclipseClasspath
файл .classpath
создается правильно. Но как только Buildship запускается, файл снова перезаписывается с неправильным порядком.
Я также пытался использовать whenMerged
вместо beforeMerged
, но это ничего не меняет.
Вот вывод Gradle при запуске Buildship (например, при нажатии Gradle -> Refresh в свойствах проекта Eclipse):
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.5/userguide/command_line_interface.html#sec:command_line_warnings
CONFIGURE SUCCESSFUL in 0s
:cleanEclipseWtpComponent
:cleanEclipseWtpFacet
:cleanEclipseWtp
:eclipseWtpComponent
:eclipseWtpFacet
:eclipseWtp
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.5/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 0s
4 actionable tasks: 4 executed
Кажется, Buildship даже не выполняет задачу eclipseClasspath
, а создает файл .classpath
каким-то другим способом.
Как я могу заставить Buildship выполнить мое желание, чтобы путь к классам был отсортирован по моему пути?