Build: Add diagnostic for publish() helper

This commit is contained in:
Vyacheslav Gerasimov
2019-02-25 18:04:58 +03:00
parent a42f607ecf
commit f7428e7161
3 changed files with 24 additions and 10 deletions
+20 -5
View File
@@ -35,14 +35,26 @@ fun Project.testsJar(body: Jar.() -> Unit = {}): Jar {
} }
} }
var Project.artifactsRemovedDiagnosticFlag: Boolean
get() = extra.has("artifactsRemovedDiagnosticFlag") && extra["artifactsRemovedDiagnosticFlag"] == true
set(value) {
extra["artifactsRemovedDiagnosticFlag"] = value
}
fun Project.removeArtifacts(configuration: Configuration, task: Task) {
configuration.artifacts.removeAll { artifact ->
artifact.file in task.outputs.files
}
artifactsRemovedDiagnosticFlag = true
}
fun Project.noDefaultJar() { fun Project.noDefaultJar() {
tasks.findByName("jar")?.let { defaultJarTask -> tasks.findByName("jar")?.let { defaultJarTask ->
defaultJarTask.enabled = false defaultJarTask.enabled = false
defaultJarTask.actions = emptyList() defaultJarTask.actions = emptyList()
configurations.forEach { cfg -> configurations.forEach { cfg ->
cfg.artifacts.removeAll { artifact -> removeArtifacts(cfg, defaultJarTask)
artifact.file in defaultJarTask.outputs.files
}
} }
} }
} }
@@ -58,8 +70,7 @@ fun Project.runtimeJarArtifactBy(task: Task, artifactRef: Any, body: Configurabl
fun <T : Jar> Project.runtimeJar(task: T, body: T.() -> Unit = {}): T { fun <T : Jar> Project.runtimeJar(task: T, body: T.() -> Unit = {}): T {
extra["runtimeJarTask"] = task extra["runtimeJarTask"] = task
tasks.findByName("jar")?.let { defaultJarTask -> tasks.findByName("jar")?.let { defaultJarTask ->
configurations.getOrCreate("archives") removeArtifacts(configurations.getOrCreate("archives"), defaultJarTask)
.artifacts.removeAll { artifact -> artifact.file in defaultJarTask.outputs.files }
} }
return task.apply { return task.apply {
setupPublicJar(project.the<BasePluginConvention>().archivesBaseName) setupPublicJar(project.the<BasePluginConvention>().archivesBaseName)
@@ -109,6 +120,10 @@ fun Project.standardPublicJars() {
fun Project.publish(body: Upload.() -> Unit = {}): Upload { fun Project.publish(body: Upload.() -> Unit = {}): Upload {
apply<plugins.PublishedKotlinModule>() apply<plugins.PublishedKotlinModule>()
if (artifactsRemovedDiagnosticFlag) {
error("`publish()` should be called before removing artifacts typically done in `noDefaultJar()` of `runtimeJar()` calls")
}
afterEvaluate { afterEvaluate {
if (configurations.findByName("classes-dirs") != null) if (configurations.findByName("classes-dirs") != null)
throw GradleException("classesDirsArtifact() is incompatible with publish(), see sources comments for details") throw GradleException("classesDirsArtifact() is incompatible with publish(), see sources comments for details")
+2 -2
View File
@@ -99,6 +99,8 @@ dependencies {
fatJarContentsStripServices(intellijDep("jps-standalone")) { includeJars("jps-model") } fatJarContentsStripServices(intellijDep("jps-standalone")) { includeJars("jps-model") }
} }
publish()
noDefaultJar() noDefaultJar()
val packCompiler by task<ShadowJar> { val packCompiler by task<ShadowJar> {
@@ -154,8 +156,6 @@ dist(targetName = "$compilerBaseName.jar", fromTask = pack) {
from(trove4jJar) from(trove4jJar)
} }
publish()
runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) { runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) {
name = compilerBaseName name = compilerBaseName
classifier = "" classifier = ""
+2 -3
View File
@@ -91,6 +91,8 @@ dependencies {
fatJarContentsStripMetadata(intellijDep()) { includeJars("oro-2.0.8", "jdom", "log4j" ) } fatJarContentsStripMetadata(intellijDep()) { includeJars("oro-2.0.8", "jdom", "log4j" ) }
} }
publish()
noDefaultJar() noDefaultJar()
val packCompiler by task<ShadowJar> { val packCompiler by task<ShadowJar> {
@@ -146,8 +148,6 @@ dist(targetName = "$compilerBaseName.jar", fromTask = pack) {
from(trove4jJar) from(trove4jJar)
} }
publish()
runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) { runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) {
name = compilerBaseName name = compilerBaseName
classifier = "" classifier = ""
@@ -158,4 +158,3 @@ sourcesJar {
} }
javadocJar() javadocJar()