Commits
Tarun Sukhani authored 5092a931c46
feat(gradle-plugin): make framework/lib the only copy of each library the fork ships (PF-192)
The plugin adds framework/lib as plain files, which carry no coordinates,
so Gradle resolved an application's own copy of the same library beside
the fork's, and with the resolved jars first on the classpath that copy
loaded. On jclaw 20 libraries were on both sides, 7 at different versions.
`ant jar` now writes framework/lib-coordinates.properties from
dependencies.yml (play.deps.LibCoordinates), and fails when a jar in lib/
matches no entry or an entry has no jar. A jar without coordinates has an
empty value: the vendored jj-* jars and jregex, the one entry left without
a group, since no artifact on Maven Central is that jar. The six other
group-less entries now name their group, which Ivy reads the same way and
which brings them under Renovate's regex.
The plugin excludes each of those modules from compileClasspath,
runtimeClasspath and testCompileClasspath, and warns once per declaration
of one, which no longer has an effect. A module listed in
play1 { appManagedLibraries(...) } keeps the application's version: no
exclude, and the fork's jar is left off every classpath and out of
playBundle. A framework without the file excludes nothing.
Guarded by OneCopyPerLibraryTest (TestKit) and LibCoordinatesTest. On
jclaw the overlap drops to 0, and nothing that holds classes leaves any
of the three classpaths.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>