| plugins { |
| id 'java-platform' |
| } |
| |
| def name = project.name |
| |
| dependencies { |
| constraints { |
| rootProject.subprojects.each { |
| if (it.name == name) return |
| if (!it.plugins.hasPlugin('maven-publish')) return |
| evaluationDependsOn(it.path) |
| it.publishing.publications.all { |
| if (it.artifactId.endsWith("-kotlinMultiplatform")) return |
| if (it.artifactId.endsWith("-metadata")) return |
| // Skip platform artifacts (like *-linuxx64, *-macosx64) |
| // It leads to inconsistent bom when publishing from different platforms |
| // (e.g. on linux it will include only linuxx64 artifacts and no macosx64) |
| // It shouldn't be a problem as usually consumers need to use generic *-native artifact |
| // Gradle will choose correct variant by using metadata attributes |
| if (it.artifacts.any { it.extension == 'klib' }) return |
| api("${it.groupId}:${it.artifactId}:${it.version}") |
| } |
| } |
| } |
| } |
| |
| publishing { |
| publications { |
| mavenBom(MavenPublication) { |
| from components.javaPlatform |
| } |
| // Disable metadata publication, no need to |
| it.each { pub -> |
| pub.moduleDescriptorGenerator = null |
| tasks.matching { it.name == "generateMetadataFileFor${pub.name.capitalize()}Publication" }.all { |
| onlyIf { false } |
| } |
| } |
| } |
| } |