我将 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
,但这并没有改变任何东西。
这是由 Buildship 启动时 Gradle 的输出(例如,通过单击 Eclipse 项目属性上的 Gradle -> Refresh):
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 兑现我的愿望,让类路径按我的方式排序?