Skip to content

Commit 407bf70

Browse files
authored
Merge pull request #968 from square/rick/artifactsDump_jdk_int
prioritize `JavaCompile.Options.release` and Android `CompileOptions` when parsing an artifact jdk version
2 parents c75f737 + d376ddb commit 407bf70

File tree

4 files changed

+80
-37
lines changed

4 files changed

+80
-37
lines changed

artifacts.json

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"artifactId": "workflow-internal-testing-utils",
66
"description": "Workflow internal testing utilities",
77
"packaging": "jar",
8-
"javaVersion": "1.8",
8+
"javaVersion": 8,
99
"publicationName": "maven"
1010
},
1111
{
@@ -14,7 +14,7 @@
1414
"artifactId": "trace-encoder",
1515
"description": "Trace Encoder",
1616
"packaging": "jar",
17-
"javaVersion": "1.8",
17+
"javaVersion": 8,
1818
"publicationName": "maven"
1919
},
2020
{
@@ -23,7 +23,7 @@
2323
"artifactId": "workflow-core-iosarm64",
2424
"description": "Workflow Core",
2525
"packaging": "klib",
26-
"javaVersion": "1.8",
26+
"javaVersion": 8,
2727
"publicationName": "iosArm64"
2828
},
2929
{
@@ -32,7 +32,7 @@
3232
"artifactId": "workflow-core-iossimulatorarm64",
3333
"description": "Workflow Core",
3434
"packaging": "klib",
35-
"javaVersion": "1.8",
35+
"javaVersion": 8,
3636
"publicationName": "iosSimulatorArm64"
3737
},
3838
{
@@ -41,7 +41,7 @@
4141
"artifactId": "workflow-core-iosx64",
4242
"description": "Workflow Core",
4343
"packaging": "klib",
44-
"javaVersion": "1.8",
44+
"javaVersion": 8,
4545
"publicationName": "iosX64"
4646
},
4747
{
@@ -50,7 +50,7 @@
5050
"artifactId": "workflow-core-js",
5151
"description": "Workflow Core",
5252
"packaging": "klib",
53-
"javaVersion": "1.8",
53+
"javaVersion": 8,
5454
"publicationName": "js"
5555
},
5656
{
@@ -59,7 +59,7 @@
5959
"artifactId": "workflow-core-jvm",
6060
"description": "Workflow Core",
6161
"packaging": "jar",
62-
"javaVersion": "1.8",
62+
"javaVersion": 8,
6363
"publicationName": "jvm"
6464
},
6565
{
@@ -68,7 +68,7 @@
6868
"artifactId": "workflow-core",
6969
"description": "Workflow Core",
7070
"packaging": "jar",
71-
"javaVersion": "1.8",
71+
"javaVersion": 8,
7272
"publicationName": "kotlinMultiplatform"
7373
},
7474
{
@@ -77,7 +77,7 @@
7777
"artifactId": "workflow-runtime-iosarm64",
7878
"description": "Workflow Runtime",
7979
"packaging": "klib",
80-
"javaVersion": "1.8",
80+
"javaVersion": 8,
8181
"publicationName": "iosArm64"
8282
},
8383
{
@@ -86,7 +86,7 @@
8686
"artifactId": "workflow-runtime-iossimulatorarm64",
8787
"description": "Workflow Runtime",
8888
"packaging": "klib",
89-
"javaVersion": "1.8",
89+
"javaVersion": 8,
9090
"publicationName": "iosSimulatorArm64"
9191
},
9292
{
@@ -95,7 +95,7 @@
9595
"artifactId": "workflow-runtime-iosx64",
9696
"description": "Workflow Runtime",
9797
"packaging": "klib",
98-
"javaVersion": "1.8",
98+
"javaVersion": 8,
9999
"publicationName": "iosX64"
100100
},
101101
{
@@ -104,7 +104,7 @@
104104
"artifactId": "workflow-runtime-js",
105105
"description": "Workflow Runtime",
106106
"packaging": "klib",
107-
"javaVersion": "1.8",
107+
"javaVersion": 8,
108108
"publicationName": "js"
109109
},
110110
{
@@ -113,7 +113,7 @@
113113
"artifactId": "workflow-runtime-jvm",
114114
"description": "Workflow Runtime",
115115
"packaging": "jar",
116-
"javaVersion": "1.8",
116+
"javaVersion": 8,
117117
"publicationName": "jvm"
118118
},
119119
{
@@ -122,7 +122,7 @@
122122
"artifactId": "workflow-runtime",
123123
"description": "Workflow Runtime",
124124
"packaging": "jar",
125-
"javaVersion": "1.8",
125+
"javaVersion": 8,
126126
"publicationName": "kotlinMultiplatform"
127127
},
128128
{
@@ -131,7 +131,7 @@
131131
"artifactId": "workflow-rx2",
132132
"description": "Workflow RxJava2",
133133
"packaging": "jar",
134-
"javaVersion": "1.8",
134+
"javaVersion": 8,
135135
"publicationName": "maven"
136136
},
137137
{
@@ -140,7 +140,7 @@
140140
"artifactId": "workflow-testing-jvm",
141141
"description": "Workflow Testing",
142142
"packaging": "jar",
143-
"javaVersion": "1.8",
143+
"javaVersion": 8,
144144
"publicationName": "maven"
145145
},
146146
{
@@ -149,7 +149,7 @@
149149
"artifactId": "workflow-tracing",
150150
"description": "Workflow Tracing",
151151
"packaging": "jar",
152-
"javaVersion": "1.8",
152+
"javaVersion": 8,
153153
"publicationName": "maven"
154154
},
155155
{
@@ -158,7 +158,7 @@
158158
"artifactId": "workflow-config-android",
159159
"description": "Workflow Runtime Android Configuration",
160160
"packaging": "aar",
161-
"javaVersion": "1.8",
161+
"javaVersion": 8,
162162
"publicationName": "maven"
163163
},
164164
{
@@ -167,7 +167,7 @@
167167
"artifactId": "workflow-config-jvm",
168168
"description": "Workflow Runtime JVM Configuration",
169169
"packaging": "jar",
170-
"javaVersion": "1.8",
170+
"javaVersion": 8,
171171
"publicationName": "maven"
172172
},
173173
{
@@ -176,7 +176,7 @@
176176
"artifactId": "workflow-ui-compose",
177177
"description": "Workflow UI Compose",
178178
"packaging": "aar",
179-
"javaVersion": "1.8",
179+
"javaVersion": 8,
180180
"publicationName": "maven"
181181
},
182182
{
@@ -185,7 +185,7 @@
185185
"artifactId": "workflow-ui-compose-tooling",
186186
"description": "Workflow UI Compose Tooling",
187187
"packaging": "aar",
188-
"javaVersion": "1.8",
188+
"javaVersion": 8,
189189
"publicationName": "maven"
190190
},
191191
{
@@ -194,7 +194,7 @@
194194
"artifactId": "workflow-ui-container-android",
195195
"description": "Workflow UI Container Android",
196196
"packaging": "aar",
197-
"javaVersion": "1.8",
197+
"javaVersion": 8,
198198
"publicationName": "maven"
199199
},
200200
{
@@ -203,7 +203,7 @@
203203
"artifactId": "workflow-ui-container-common-jvm",
204204
"description": "Workflow UI Container",
205205
"packaging": "jar",
206-
"javaVersion": "1.8",
206+
"javaVersion": 8,
207207
"publicationName": "maven"
208208
},
209209
{
@@ -212,7 +212,7 @@
212212
"artifactId": "workflow-ui-core-android",
213213
"description": "Workflow UI Android",
214214
"packaging": "aar",
215-
"javaVersion": "1.8",
215+
"javaVersion": 8,
216216
"publicationName": "maven"
217217
},
218218
{
@@ -221,7 +221,7 @@
221221
"artifactId": "workflow-ui-core-common-jvm",
222222
"description": "Workflow UI Core",
223223
"packaging": "jar",
224-
"javaVersion": "1.8",
224+
"javaVersion": 8,
225225
"publicationName": "maven"
226226
},
227227
{
@@ -230,7 +230,7 @@
230230
"artifactId": "workflow-ui-radiography",
231231
"description": "Workflow UI Radiography Support",
232232
"packaging": "aar",
233-
"javaVersion": "1.8",
233+
"javaVersion": 8,
234234
"publicationName": "maven"
235235
}
236-
]
236+
]

buildSrc/src/main/java/com/squareup/workflow1/buildsrc/artifacts/ArtifactConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ data class ArtifactConfig(
2828
val artifactId: String,
2929
val description: String,
3030
val packaging: String,
31-
val javaVersion: String,
31+
val javaVersion: Int,
3232
val publicationName: String
3333
) : Serializable {
3434
val key = "$gradlePath+$publicationName"

buildSrc/src/main/java/com/squareup/workflow1/buildsrc/artifacts/ArtifactsCheckTask.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import org.gradle.api.provider.Property
1111
import org.gradle.api.tasks.Input
1212
import org.gradle.api.tasks.TaskAction
1313
import org.gradle.api.tasks.options.Option
14-
import org.gradle.kotlin.dsl.property
1514
import java.util.Locale
1615
import javax.inject.Inject
1716

@@ -31,7 +30,8 @@ open class ArtifactsCheckTask @Inject constructor(
3130
group = "verification"
3231
}
3332

34-
private val lenientOsProp: Property<Boolean> = objectFactory.property()
33+
private val lenientOsProp: Property<Boolean> = objectFactory.property(Boolean::class.java)
34+
.convention(false)
3535

3636
@set:Option(
3737
option = "lenient-os",
@@ -181,7 +181,9 @@ open class ArtifactsCheckTask @Inject constructor(
181181
appendLine("\tDuplicate properties were found where they should be unique:")
182182
appendLine()
183183
duplicates.forEach { (value, artifacts) ->
184-
appendLine("\t\t projects - ${artifacts.map { "${it.gradlePath} (${it.publicationName})" }}")
184+
appendLine(
185+
"\t\t projects - ${artifacts.map { "${it.gradlePath} (${it.publicationName})" }}"
186+
)
185187
appendLine("\t\t property - $propertyName")
186188
appendLine("\t\tduplicate value - $value")
187189
appendLine()
@@ -261,8 +263,11 @@ open class ArtifactsCheckTask @Inject constructor(
261263
}
262264

263265
private fun pluralsString(size: Int): String {
264-
return if (size == 1) "This artifact is"
265-
else "These artifacts are"
266+
return if (size == 1) {
267+
"This artifact is"
268+
} else {
269+
"These artifacts are"
270+
}
266271
}
267272

268273
private fun ArtifactConfig.message(): String {

buildSrc/src/main/java/com/squareup/workflow1/buildsrc/artifacts/ArtifactsTask.kt

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.squareup.workflow1.buildsrc.artifacts
22

3+
import com.android.build.gradle.TestedExtension
34
import com.squareup.moshi.JsonAdapter
45
import com.squareup.moshi.Moshi
56
import com.squareup.moshi.Types
@@ -12,7 +13,7 @@ import org.gradle.api.publish.PublishingExtension
1213
import org.gradle.api.publish.maven.MavenPublication
1314
import org.gradle.api.tasks.Internal
1415
import org.gradle.api.tasks.OutputFile
15-
import org.gradle.kotlin.dsl.getByType
16+
import org.gradle.api.tasks.compile.JavaCompile
1617

1718
abstract class ArtifactsTask(
1819
private val projectLayout: ProjectLayout
@@ -83,9 +84,7 @@ abstract class ArtifactsTask(
8384
.takeIf { it.size == 4 }
8485
?.let { (group, artifactId, pomDescription, packaging) ->
8586

86-
val javaVersion = sub.extensions.getByType(JavaPluginExtension::class)
87-
.sourceCompatibility
88-
.toString()
87+
val javaVersion = sub.getJavaReleaseVersion()
8988

9089
ArtifactConfig(
9190
gradlePath = sub.path,
@@ -101,4 +100,43 @@ abstract class ArtifactsTask(
101100

102101
return map
103102
}
103+
104+
/**
105+
* Determines the JDK version which will be used for published artifacts.
106+
*
107+
* The JDK version is the first non-null value of:
108+
* 1. [JavaCompile.Options.release]
109+
* 2. (for Android) [com.android.build.gradle.internal.CompileOptions.getTargetCompatibility]
110+
* 3. [org.gradle.api.plugins.JavaPluginExtension.getTargetCompatibility.getMajorVersion]
111+
*/
112+
private fun Project.getJavaReleaseVersion(): Int {
113+
val releaseVersion = tasks.withType(JavaCompile::class.java)
114+
.mapNotNull { it.options.release.orNull }
115+
.distinct()
116+
.also { versions ->
117+
check(versions.size < 2) {
118+
"Multiple JDK release versions are not supported. We found: $versions"
119+
}
120+
}
121+
.singleOrNull()
122+
123+
if (releaseVersion != null) {
124+
return releaseVersion
125+
}
126+
127+
val androidVersion = extensions.findByType(TestedExtension::class.java)
128+
?.compileOptions
129+
?.targetCompatibility
130+
?.majorVersion
131+
132+
if (androidVersion != null) {
133+
return androidVersion.toInt()
134+
}
135+
136+
return extensions
137+
.getByType(JavaPluginExtension::class.java)
138+
.targetCompatibility
139+
.majorVersion
140+
.toInt()
141+
}
104142
}

0 commit comments

Comments
 (0)