Skip to content

gradle does not provide modules/*.jar for transient dependencies (regression) #4014

@keturn

Description

@keturn

What you were trying to do

Get a module's sources for development and play testing.

What actually happened

Got module's sources, built module, but the game was not able to resolve the module's dependencies in the Advanced Game Setup screen.

How to reproduce

  • start with empty modules/ workspace
  • groovyw module get JoshariasSurvival
  • gradlew jar
  • gradlew game
  • create new game, advanced setup, observe JoshariasSurvival is lacking its transient dependencies

Log details and game version

I'm not actually watching this error happen right now, this report is assembled from Niruandaleth's notes and my understanding of gradle.

Discussion

I expect this started when Core Upheaval removed transient dependencies from many module.txt at around the same time as the Gradle 6.4 branch made some adjustments to how it treats compile-time dependencies.

The thing that makes the .jar files show up in the modules/ directory when a module is built from source is the RemoteModuleGatherer we have in our gradle configuration.

The crux of the issue is here:

dependencies.name == "compileClasspath") {

it's only checking the compile-time classpath, which don't include the transient dependencies.

Changing that to include the run-time classpath is a small change. However, I'm not fully confident that the PC facade knows it needs to resolve the runtime classpath of the modules before it starts. If it doesn't, there will be nothing for the RemoteModuleGatherer to observe and copy.

Metadata

Metadata

Assignees

Labels

Category: Build/CIRequests, Issues and Changes targeting gradle, groovy, Jenkins, etc.Type: BugIssues reporting and PRs fixing problems

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions