Skip to content

Commit b4875f3

Browse files
authored
Disable task caching (#39)
* Disable tasks caching The DevPublish tasks only relocates files. Caching the tasks is wasteful and slow. * create distinct directory for each test * test DevPublish does not affect Build Cache
1 parent 1b6875d commit b4875f3

File tree

11 files changed

+377
-211
lines changed

11 files changed

+377
-211
lines changed

src/main/kotlin/tasks/BaseDevPublishTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.gradle.api.DefaultTask
55
import org.gradle.work.DisableCachingByDefault
66

77
/** Base task type for all [dev.adamko.gradle.dev_publish.DevPublishPlugin] tasks. */
8-
@DisableCachingByDefault
8+
@DisableCachingByDefault(because = "Lifecycle task")
99
abstract class BaseDevPublishTask
1010
@DevPublishInternalApi constructor() : DefaultTask() {
1111
init {

src/main/kotlin/tasks/GeneratePublicationDataChecksumTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import org.gradle.api.tasks.TaskAction
1717
import org.gradle.work.DisableCachingByDefault
1818

1919

20-
@DisableCachingByDefault
20+
@DisableCachingByDefault(because = "Always re-compute checksums")
2121
abstract class GeneratePublicationDataChecksumTask
2222
@Inject
2323
@DevPublishInternalApi

src/main/kotlin/tasks/UpdateDevRepoTask.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import org.gradle.api.file.FileSystemOperations
1212
import org.gradle.api.provider.Provider
1313
import org.gradle.api.tasks.*
1414
import org.gradle.api.tasks.PathSensitivity.RELATIVE
15+
import org.gradle.work.DisableCachingByDefault
1516

16-
@CacheableTask
17+
@DisableCachingByDefault(because = "This task only relocates files")
1718
abstract class UpdateDevRepoTask
1819
@Inject
1920
@DevPublishInternalApi

src/test/kotlin/ApiPropagationTest.kt

Lines changed: 119 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -44,138 +44,145 @@ class ApiPropagationTest : FunSpec({
4444
}) {
4545
companion object {
4646

47-
private fun TestScope.project() = gradleKtsProjectTest(testCase.name.testName.replaceNonAlphaNumeric()) {
47+
private fun TestScope.project() =
48+
gradleKtsProjectTest(
49+
projectName = "multi-module project",
50+
testProjectPath = testCase.descriptor.slashSeparatedPath(),
51+
) {
4852

49-
settingsGradleKts += """
50-
include(
51-
":project-kotlin-lib1",
52-
":project-kotlin-lib2",
53-
":project-kotlin-app",
54-
55-
":project-aggregate",
56-
)
57-
""".trimIndent()
58-
59-
buildGradleKts = """
60-
plugins {
61-
kotlin("jvm") version embeddedKotlinVersion apply false
62-
}
63-
""".trimIndent()
53+
settingsGradleKts += """
54+
include(
55+
":project-kotlin-lib1",
56+
":project-kotlin-lib2",
57+
":project-kotlin-app",
58+
59+
":project-aggregate",
60+
)
61+
""".trimIndent()
6462

65-
dir("project-kotlin-lib1") {
6663
buildGradleKts = """
67-
plugins {
68-
kotlin("jvm")
69-
id("dev.adamko.dev-publish") version "+"
70-
`maven-publish`
71-
}
72-
73-
group = "project.kotlin.lib1"
74-
version = "1.2.3"
75-
76-
publishing {
77-
publications {
78-
create<MavenPublication>("mavenJava") {
79-
from(components["java"])
80-
}
64+
plugins {
65+
kotlin("jvm") version embeddedKotlinVersion apply false
8166
}
82-
}
8367
""".trimIndent()
8468

85-
createKotlinFile(
86-
"src/main/kotlin/KotlinLib1Class.kt", """
87-
class KotlinLib1Class {
88-
fun name() = "project.kotlin.lib1"
69+
dir("project-kotlin-lib1") {
70+
buildGradleKts = """
71+
plugins {
72+
kotlin("jvm")
73+
id("dev.adamko.dev-publish") version "+"
74+
`maven-publish`
75+
}
76+
77+
group = "project.kotlin.lib1"
78+
version = "1.2.3"
79+
80+
publishing {
81+
publications {
82+
create<MavenPublication>("mavenJava") {
83+
from(components["java"])
84+
}
85+
}
8986
}
9087
""".trimIndent()
91-
)
92-
}
9388

94-
dir("project-kotlin-lib2") {
95-
buildGradleKts = """
96-
plugins {
97-
kotlin("jvm")
98-
id("dev.adamko.dev-publish") version "+"
99-
`maven-publish`
100-
}
101-
102-
dependencies {
103-
devPublicationApi(project(":project-kotlin-lib1"))
104-
}
105-
106-
group = "project.kotlin.lib2"
107-
version = "9.0.1"
108-
109-
publishing {
110-
publications {
111-
create<MavenPublication>("mavenJava") {
112-
from(components["java"])
89+
createKotlinFile(
90+
"src/main/kotlin/KotlinLib1Class.kt",
91+
"""
92+
class KotlinLib1Class {
93+
fun name() = "project.kotlin.lib1"
11394
}
114-
}
115-
}
116-
""".trimIndent()
95+
""".trimIndent()
96+
)
97+
}
11798

118-
createKotlinFile(
119-
"src/main/kotlin/KotlinLib2Class.kt", """
120-
class KotlinLib2Class {
121-
fun name() = "project.kotlin.lib2"
99+
dir("project-kotlin-lib2") {
100+
buildGradleKts = """
101+
plugins {
102+
kotlin("jvm")
103+
id("dev.adamko.dev-publish") version "+"
104+
`maven-publish`
105+
}
106+
107+
dependencies {
108+
devPublicationApi(project(":project-kotlin-lib1"))
109+
}
110+
111+
group = "project.kotlin.lib2"
112+
version = "9.0.1"
113+
114+
publishing {
115+
publications {
116+
create<MavenPublication>("mavenJava") {
117+
from(components["java"])
118+
}
119+
}
122120
}
123121
""".trimIndent()
124-
)
125-
}
126122

127-
dir("project-kotlin-app") {
128-
buildGradleKts = """
129-
plugins {
130-
kotlin("jvm")
131-
id("dev.adamko.dev-publish") version "+"
132-
`maven-publish`
133-
}
134-
135-
group = "project.kotlin.app"
136-
version = "9.9.9"
137-
138-
dependencies {
139-
implementation(project(":project-kotlin-lib1"))
140-
implementation(project(":project-kotlin-lib2"))
141-
142-
// don't need lib1 dependency, it's exposed as api() by lib2
143-
//devPublication(project(":project-kotlin-lib1"))
144-
devPublicationApi(project(":project-kotlin-lib2"))
145-
}
146-
147-
publishing {
148-
publications {
149-
create<MavenPublication>("mavenJava") {
150-
from(components["java"])
123+
createKotlinFile(
124+
"src/main/kotlin/KotlinLib2Class.kt",
125+
"""
126+
class KotlinLib2Class {
127+
fun name() = "project.kotlin.lib2"
151128
}
152-
}
153-
}
154-
""".trimIndent()
129+
""".trimIndent()
130+
)
131+
}
155132

156-
createKotlinFile(
157-
"src/main/kotlin/KotlinNoDevPublishClass.kt", """
158-
class KotlinApp {
159-
fun app() = "x"
133+
dir("project-kotlin-app") {
134+
buildGradleKts = """
135+
plugins {
136+
kotlin("jvm")
137+
id("dev.adamko.dev-publish") version "+"
138+
`maven-publish`
139+
}
140+
141+
group = "project.kotlin.app"
142+
version = "9.9.9"
143+
144+
dependencies {
145+
implementation(project(":project-kotlin-lib1"))
146+
implementation(project(":project-kotlin-lib2"))
147+
148+
// don't need lib1 dependency, it's exposed as api() by lib2
149+
//devPublication(project(":project-kotlin-lib1"))
150+
devPublicationApi(project(":project-kotlin-lib2"))
151+
}
152+
153+
publishing {
154+
publications {
155+
create<MavenPublication>("mavenJava") {
156+
from(components["java"])
157+
}
158+
}
160159
}
161160
""".trimIndent()
162-
)
163-
}
164161

165-
dir("project-aggregate") {
166-
buildGradleKts = """
167-
plugins {
168-
id("dev.adamko.dev-publish") version "+"
169-
}
170-
171-
group = "project.kotlin.aggregate"
172-
173-
dependencies {
174-
devPublication(project(":project-kotlin-app"))
175-
}
176-
""".trimIndent()
162+
createKotlinFile(
163+
"src/main/kotlin/KotlinNoDevPublishClass.kt",
164+
"""
165+
class KotlinApp {
166+
fun app() = "x"
167+
}
168+
""".trimIndent()
169+
)
170+
}
171+
172+
dir("project-aggregate") {
173+
buildGradleKts = """
174+
plugins {
175+
id("dev.adamko.dev-publish") version "+"
176+
}
177+
178+
group = "project.kotlin.aggregate"
179+
180+
dependencies {
181+
devPublication(project(":project-kotlin-app"))
182+
}
183+
""".trimIndent()
184+
}
177185
}
178-
}
179186

180187
@Language("TEXT")
181188
private val ExpectedDevRepoTree = """

0 commit comments

Comments
 (0)