For the following piece of code, the “requires org.postgresql.jdbc;” is unresolved when trying to perform Gradle-sync/assemble/build and using custom configuration ‘driver’ and custom sourceSet ‘driver’.
build.gradle
plugins {
id 'java-library' //used to create java api and implementation separated libs
}
configurations{
driver
}
dependencies {
driver group: 'org.postgresql', name: 'postgresql', version: '42.6.0'
}
sourceSets{
driver{
java{ srcDirs = ['src'] }
}
}
compileJava.dependsOn(compileDriverJava)
module-info.java
module database.driver {
requires java.base; // core dependencies(internal)
requires java.sql; // sql module (externalized) dependencies
requires org.postgresql.jdbc; // postgresql driver (internal) dependencies
}
while it is resolved and builds/assembles fine without issues when using the default ‘implementation’ configuration and default ‘main’ sourceSet.
build.gradle
plugins {
id 'java-library' //used to create java api and implementation separated libs
}
dependencies {
implementation group: 'org.postgresql', name: 'postgresql', version: '42.6.0'
}
sourceSets{
main{
java{ srcDirs = ['src'] }
}
}
compileJava.dependsOn(compileDriverJava)
Why are the custom configuration dependencies not visible for module-info.java, is this due to the reason that sourceSet ‘main’ is not used?
NOTE: running ./gradlew dependencies when using custom configuration ‘driver’ for sourceSets and dependencies task, prints out that dependencies are resolved.
NOTE: compileJava itself doesn’t do anything nor has any sourceSets to work with and in-turn doesn’t need any dependencies. But it depends on custom configuration compilation ‘compileDriverJava’
NOTE: postgres manifest contains Automatic-module-name to denote it is an automatic module
Manifest-Version: 1.0
Automatic-Module-Name: org.postgresql.jdbc
output of ‘./gradlew dependencies’ when using custom configuration ‘driver’
> Task :dependencies
------------------------------------------------------------
Root project 'database.driver'
------------------------------------------------------------
annotationProcessor - Annotation processors and their dependencies for source set 'main'.
No dependencies
api - API dependencies for source set 'main'. (n)
No dependencies
apiElements - API elements for main. (n)
No dependencies
compileClasspath - Compile classpath for source set 'main'.
No dependencies
compileOnly - Compile only dependencies for source set 'main'. (n)
No dependencies
compileOnlyApi - Compile only API dependencies for source set 'main'. (n)
No dependencies
default - Configuration for default artifacts. (n)
No dependencies
driver
\--- org.postgresql:postgresql:42.6.0
\--- org.checkerframework:checker-qual:3.31.0
driverAnnotationProcessor - Annotation processors and their dependencies for source set 'driver'.
No dependencies
driverCompileClasspath - Compile classpath for source set 'driver'.
No dependencies
driverCompileOnly - Compile only dependencies for source set 'driver'. (n)
No dependencies
driverImplementation - Implementation only dependencies for source set 'driver'. (n)
No dependencies
driverRuntimeClasspath - Runtime classpath of source set 'driver'.
No dependencies
driverRuntimeOnly - Runtime only dependencies for source set 'driver'. (n)
No dependencies
implementation - Implementation only dependencies for source set 'main'. (n)
No dependencies
mainSourceElements - List of source directories contained in the Main SourceSet. (n)
No dependencies
runtimeClasspath - Runtime classpath of source set 'main'.
No dependencies
runtimeElements - Elements of runtime for main. (n)
No dependencies
runtimeOnly - Runtime only dependencies for source set 'main'. (n)
No dependencies
testAnnotationProcessor - Annotation processors and their dependencies for source set 'test'.
No dependencies
testCompileClasspath - Compile classpath for source set 'test'.
No dependencies
testCompileOnly - Compile only dependencies for source set 'test'. (n)
No dependencies
testImplementation - Implementation only dependencies for source set 'test'. (n)
No dependencies
testResultsElementsForTest - Directory containing binary results of running tests for the test Test Suite's test target. (n)
No dependencies
testRuntimeClasspath - Runtime classpath of source set 'test'.
No dependencies
testRuntimeOnly - Runtime only dependencies for source set 'test'. (n)
No dependencies