Currently Gradle is generating classpath entries like this for JAR dependencies in the WAR:
It should be generating:
And once it starts using "org.eclipse.jst.component.dependency", the entries from the WTP component file should be removed. Without removing them the JARs may be included in the classloader twice when using a server within Eclipse.
This seems related to a bunch of issues that have been reported (and some of them fixed before):
This Maven issue was linked from one of them, which recommends the approach I documented above:
Bear in mind that one difference in my use case is that we are using SelfResolvingDependencies. I don't know if these are handled differently in the WTP plugin than the module dependencies you would get from using a Maven/Ivy repo.
Even if that is the issue, they should be handled consistently.