我当前的配置包括一个Java WAR项目,它使用带有java和eclipse-wtp插件的gradle,以及最新版本的Buildship for Eclipse集成(1.0.3直到今天早上和1.0.4现在)以及Eclipse Luna。
在遵循此解决方案https://stackoverflow.com/a/9820317/1544713(成功)以避免将测试类部署到本地服务器之后,我注意到每次刷新项目或关闭并打开Eclipse时,.classpath
文件和{ {1}}被改为以前的状态,这是我给我带来问题的东西(将测试类部署到本地服务器意味着由于缺少一些测试时间依赖性而无法加载它们,当然还有不良行为)。
.settings/org.eclipse.wst.common.component
的内容从(右边)更改:
.classpath
到这种不受欢迎的状态:
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="FROM_GRADLE_MODEL" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="FROM_GRADLE_MODEL" value="true"/>
</attributes>
</classpathentry>
在<classpathentry kind="src" path="src/test/java">
<attributes>
<attribute name="FROM_GRADLE_MODEL" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src/test/resources">
<attributes>
<attribute name="FROM_GRADLE_MODEL" value="true"/>
</attributes>
</classpathentry>
的情况下,添加了这两行(我再也不想让它们出现):
.settings/org.eclipse.wst.common.component
我无法弄清楚Gradle是否正在更改文件或Buildship,甚至是Eclipse。无论如何,我想有办法阻止这种情况的发生。我尝试了很多替代方案,比如build.gradle中的以下配置:
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
但是这种配置工作不正常(有时它似乎工作,有时它没有,实际上第一段以eclipse.classpath.file.whenMerged开始的代码永远不会工作)。
提前致谢。
答案 0 :(得分:4)
花了一些时间寻找可能的解决方案,以及问题的原因,我发现真正的问题实际上是Buildship,它没有注意eclipse-wtp插件的指令在build.gradle中,而是采用自己的方法生成.classpath
和相关的eclipse配置文件。同时,到目前为止(Buildship 1.0.5刚刚发布),在构建自己的模型时(导入Gradle项目,打开Eclipse或刷新项目时)无法配置或操作Buildship。 F5)。正如Lance_Java在Gradle论坛(https://discuss.gradle.org/t/gradle-integration-for-eclipse-keeps-on-changing-classpath-file/11813/7?u=fbudassi)中所说,将eclipse-wtp插件与Buildship一起使用是无用的,因为两者都采用自己的方法来生成Eclipse配置文件。
因此,到目前为止,解决方案一直是从我的Eclipse安装中删除Buildship,而是直接从Eclipse市场中使用 Gradle IDE Pack 3.6.x + 0.17 插件替换它,该市场使用了构建.gradle指令构建自己的模型,避免这种可能的冲突。
如果Buildship的任何人都读过这篇文章,请给我们一些关于文件生成的钩子。再次,正如Lance_Java建议的那样,这样的事情真的会有所帮助:
apply plugin: 'buildship'
buildship.wtp.component.file.withXml { ... }