From 2678f8679f8345bc8d50807b8f2444db6fd3caa7 Mon Sep 17 00:00:00 2001 From: Jumpei Matsuda Date: Fri, 24 Apr 2020 15:07:22 +0900 Subject: [PATCH 1/5] Collect local file(self resolved dependency) as well --- example/app/build.gradle.kts | 4 + .../license/internal/ArtifactManagement.kt | 101 +++++++++++------- .../jmatsu/license/internal/PomParser.kt | 9 +- .../jmatsu/license/model/LicenseSeed.kt | 6 ++ .../jmatsu/license/model/ResolvedArtifact.kt | 3 +- .../jmatsu/license/model/ResolvedMetadata.kt | 26 +++++ .../license/model/ResolvedModuleIdentifier.kt | 5 + .../jmatsu/license/model/ResolvedPomFile.kt | 13 --- .../jmatsu/license/presentation/Builder.kt | 12 +-- .../jmatsu/license/internal/PomParserTest.kt | 11 +- .../jmatsu/license/presentation/MergerTest.kt | 10 +- 11 files changed, 123 insertions(+), 77 deletions(-) create mode 100644 plugin/src/main/kotlin/io/github/jmatsu/license/model/LicenseSeed.kt create mode 100644 plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedMetadata.kt delete mode 100644 plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedPomFile.kt diff --git a/example/app/build.gradle.kts b/example/app/build.gradle.kts index 7bde0cf..eacced7 100644 --- a/example/app/build.gradle.kts +++ b/example/app/build.gradle.kts @@ -62,6 +62,10 @@ configurations.getByName("implementation").extendsFrom(sampleConfiguration) val orphanConfiguration = configurations.create("orphan") dependencies { + implementation(fileTree(project.file("lib")) { + include("*.jar") + }) + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71") implementation("androidx.core:core-ktx:1.3.0-alpha02") implementation("androidx.appcompat:appcompat:1.2.0-alpha03") diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/internal/ArtifactManagement.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/internal/ArtifactManagement.kt index 9fadd85..070d8f0 100644 --- a/plugin/src/main/kotlin/io/github/jmatsu/license/internal/ArtifactManagement.kt +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/internal/ArtifactManagement.kt @@ -1,53 +1,24 @@ package io.github.jmatsu.license.internal +import io.github.jmatsu.license.LicenseListPlugin import io.github.jmatsu.license.ext.collectToMap import io.github.jmatsu.license.ext.lenientConfiguration +import io.github.jmatsu.license.model.LicenseSeed import io.github.jmatsu.license.model.ResolveScope import io.github.jmatsu.license.model.ResolvedArtifact +import io.github.jmatsu.license.model.ResolvedLocalFileMetadata import io.github.jmatsu.license.model.ResolvedModuleIdentifier import io.github.jmatsu.license.model.VersionString +import io.github.jmatsu.license.model.localGroup +import java.io.File import java.util.SortedMap -import kotlin.Comparator -import kotlin.Pair -import kotlin.String -import kotlin.also -import kotlin.arrayOf -import kotlin.collections.ArrayList -import kotlin.collections.List -import kotlin.collections.MutableList -import kotlin.collections.Set -import kotlin.collections.asSequence +import java.util.zip.ZipFile import kotlin.collections.component1 import kotlin.collections.component2 import kotlin.collections.component3 -import kotlin.collections.contains -import kotlin.collections.distinctBy -import kotlin.collections.filter -import kotlin.collections.filterNot -import kotlin.collections.flatMap -import kotlin.collections.getValue -import kotlin.collections.groupBy -import kotlin.collections.listOf -import kotlin.collections.map -import kotlin.collections.mapKeys -import kotlin.collections.mapNotNull -import kotlin.collections.mapValues -import kotlin.collections.max -import kotlin.collections.orEmpty -import kotlin.collections.plus -import kotlin.collections.plusAssign -import kotlin.collections.reduce -import kotlin.collections.setOf -import kotlin.collections.toMap -import kotlin.collections.toSet -import kotlin.collections.toSortedMap -import kotlin.let -import kotlin.requireNotNull -import kotlin.run -import kotlin.takeIf -import kotlin.to import org.gradle.api.Project import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.SelfResolvingDependency import org.gradle.api.artifacts.component.ComponentIdentifier import org.gradle.api.artifacts.result.ResolvedArtifactResult import org.gradle.kotlin.dsl.withArtifacts @@ -94,8 +65,22 @@ class ArtifactManagement( val components: MutableList = ArrayList() - val scopedModules = scopedConfigurations.mapValues { (_, configurations) -> + val localFileMap: MutableMap> = hashMapOf() + + val scopedModules = scopedConfigurations.mapValues { (scope, configurations) -> configurations.flatMap { configuration -> + runCatching { + localFileMap.putIfAbsent(scope, emptyList()) + localFileMap[scope] = localFileMap.getValue(scope) + configuration.allDependencies + .filterIsInstance() + .flatMap { + it.resolve() + } + .filter { it.name.endsWith(".jar") || it.name.endsWith(".aar") } + }.onFailure { + LicenseListPlugin.logger?.error("could not resolve local files in ${scope.name}", it) + } + val newResolvedIdentifiers = configuration.toResolvedModuleIdentifiers().filterNot { id -> id.id?.componentIdentifier in components } @@ -116,7 +101,41 @@ class ArtifactManagement( val allScopes = listOf(variantScope) + additionalScopes - return resolveResults.resolvedComponents.flatMap { result -> + val scopedLocalFiles = localFileMap.values.flatten().distinct().groupBy { file -> + localFileMap.asIterable().first { (_, files) -> file in files }.key + }.flatMap { (key, files) -> + files.map { file -> + val id = ResolvedModuleIdentifier( + group = localGroup, + name = file.name + ) + + val licenseCandidates = ZipFile(file).use { zip -> + zip.entries().asSequence() + .filter { !it.isDirectory && it.name.startsWith("META-INF/") && it.name.contains("LICENSE") } + .map { it.name } + .toList() + } + + // It's hard to infer used licenses through META-INF/LICENSE* + val metadata = ResolvedLocalFileMetadata( + displayName = file.nameWithoutExtension, + licenses = licenseCandidates.mapIndexed { i, path -> + LicenseSeed( + name = "${file.nameWithoutExtension}-$i", + url = path + ) + } + ) + + key to ResolvedArtifact( + id = id, + metadata = metadata + ) + } + } + + return (resolveResults.resolvedComponents.flatMap { result -> result.getArtifacts(MavenPomArtifact::class.java).map { it as ResolvedArtifactResult @@ -143,7 +162,7 @@ class ArtifactManagement( ResolveScope.Unknown to ResolvedArtifact( id = id, - pomFile = pomFile + metadata = pomFile ) } else -> { @@ -151,12 +170,12 @@ class ArtifactManagement( scope to ResolvedArtifact( id = modules.getValue(component), - pomFile = pomFile + metadata = pomFile ) } } } - }.collectToMap().toSortedMap(Comparator { o1, o2 -> + } + scopedLocalFiles).collectToMap().toSortedMap(Comparator { o1, o2 -> allScopes.indexOf(o1).compareTo(allScopes.indexOf(o2)) }) } diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/internal/PomParser.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/internal/PomParser.kt index 6bd383a..0037652 100644 --- a/plugin/src/main/kotlin/io/github/jmatsu/license/internal/PomParser.kt +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/internal/PomParser.kt @@ -2,16 +2,13 @@ package io.github.jmatsu.license.internal import groovy.util.XmlSlurper import groovy.util.slurpersupport.GPathResult +import io.github.jmatsu.license.model.LicenseSeed import io.github.jmatsu.license.model.ResolvedPomFile import java.io.File class PomParser( private val file: File ) { - data class License( - val name: String?, - val url: String? - ) fun parse(): ResolvedPomFile { val pomRoot = XmlSlurper(false, false).parse(file) @@ -26,13 +23,13 @@ class PomParser( it?.trimText() } - val licenses: List = pomRoot["licenses"] + val licenses: List = pomRoot["licenses"] .childPaths() .map { val name = it["name"]?.trimText() val url = it["url"]?.trimText() // Is distribution node required? :thinking_face: - License( + LicenseSeed( name = name, url = url ) diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/model/LicenseSeed.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/model/LicenseSeed.kt new file mode 100644 index 0000000..fd56ab4 --- /dev/null +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/model/LicenseSeed.kt @@ -0,0 +1,6 @@ +package io.github.jmatsu.license.model + +data class LicenseSeed( + val name: String?, + val url: String? +) diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedArtifact.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedArtifact.kt index ea38245..6b4c269 100644 --- a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedArtifact.kt +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedArtifact.kt @@ -2,5 +2,6 @@ package io.github.jmatsu.license.model data class ResolvedArtifact( val id: ResolvedModuleIdentifier, - val pomFile: ResolvedPomFile + val metadata: ResolvedMetadata, + val local: Boolean = false ) diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedMetadata.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedMetadata.kt new file mode 100644 index 0000000..83fe23d --- /dev/null +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedMetadata.kt @@ -0,0 +1,26 @@ +package io.github.jmatsu.license.model + +sealed class ResolvedMetadata { + abstract val associatedUrl: String? + abstract val displayName: String + abstract val licenses: List + abstract val copyrightHolders: List +} + +data class ResolvedPomFile( + override val associatedUrl: String?, + val displayNameCandidates: List, + override val licenses: List, + override val copyrightHolders: List +) : ResolvedMetadata() { + override val displayName: String + get() = displayNameCandidates.first { it.isNotBlank() } +} + +data class ResolvedLocalFileMetadata( + override val displayName: String, + override val licenses: List +) : ResolvedMetadata() { + override val associatedUrl: String? = null + override val copyrightHolders: List = emptyList() +} diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedModuleIdentifier.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedModuleIdentifier.kt index 2fed3b8..66302d2 100644 --- a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedModuleIdentifier.kt +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedModuleIdentifier.kt @@ -6,6 +6,9 @@ data class ResolvedModuleIdentifier( val group: String, val name: String, val version: VersionString = VersionString("+"), + /** + * Optional. Present iff resolved artifact + */ val id: ComponentArtifactIdentifier? = null ) : Comparable { override fun compareTo(other: ResolvedModuleIdentifier): Int { @@ -13,3 +16,5 @@ data class ResolvedModuleIdentifier( .takeIf { it != 0 } ?: version.compareTo(other.version) } } + +const val localGroup = "local-file" diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedPomFile.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedPomFile.kt deleted file mode 100644 index a709813..0000000 --- a/plugin/src/main/kotlin/io/github/jmatsu/license/model/ResolvedPomFile.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.jmatsu.license.model - -import io.github.jmatsu.license.internal.PomParser - -data class ResolvedPomFile( - val associatedUrl: String?, - val displayNameCandidates: List, - val licenses: List, - val copyrightHolders: List -) { - val displayName: String - get() = displayNameCandidates.first { it.isNotBlank() } -} diff --git a/plugin/src/main/kotlin/io/github/jmatsu/license/presentation/Builder.kt b/plugin/src/main/kotlin/io/github/jmatsu/license/presentation/Builder.kt index 53434a1..8be742d 100644 --- a/plugin/src/main/kotlin/io/github/jmatsu/license/presentation/Builder.kt +++ b/plugin/src/main/kotlin/io/github/jmatsu/license/presentation/Builder.kt @@ -3,7 +3,7 @@ package io.github.jmatsu.license.presentation import io.github.jmatsu.license.internal.LicenseClassifier import io.github.jmatsu.license.model.ResolveScope import io.github.jmatsu.license.model.ResolvedArtifact -import io.github.jmatsu.license.model.ResolvedPomFile +import io.github.jmatsu.license.model.ResolvedMetadata import io.github.jmatsu.license.poko.ArtifactDefinition import io.github.jmatsu.license.poko.LicenseKey import io.github.jmatsu.license.poko.PlainLicense @@ -19,14 +19,14 @@ class Builder( fun transformToArtifact(artifact: ResolvedArtifact, licenseCapture: MutableSet): ArtifactDefinition { return ArtifactDefinition( key = "${artifact.id.group}:${artifact.id.name}", - licenses = artifact.pomFile.licenses(licenseCapture), - copyrightHolders = artifact.pomFile.copyrightHolders, - url = artifact.pomFile.associatedUrl, - displayName = artifact.pomFile.displayName + licenses = artifact.metadata.licenses(licenseCapture), + copyrightHolders = artifact.metadata.copyrightHolders, + url = artifact.metadata.associatedUrl, + displayName = artifact.metadata.displayName ) } - private fun ResolvedPomFile.licenses(licenseCapture: MutableSet): List { + private fun ResolvedMetadata.licenses(licenseCapture: MutableSet): List { return licenses.map { val licenseName = it.name?.trim { c -> c.isWhitespace() || c == '\n' || c == '\r' } diff --git a/plugin/src/test/kotlin/io/github/jmatsu/license/internal/PomParserTest.kt b/plugin/src/test/kotlin/io/github/jmatsu/license/internal/PomParserTest.kt index a348633..0b837ef 100644 --- a/plugin/src/test/kotlin/io/github/jmatsu/license/internal/PomParserTest.kt +++ b/plugin/src/test/kotlin/io/github/jmatsu/license/internal/PomParserTest.kt @@ -1,5 +1,6 @@ package io.github.jmatsu.license.internal +import io.github.jmatsu.license.model.LicenseSeed import java.io.File import java.util.stream.Stream import kotlin.test.expect @@ -19,7 +20,7 @@ class PomParserTest { "https://github.com/jmatsu", listOf("jmatsu"), listOf( - PomParser.License( + LicenseSeed( name = "The Apache Software License, Version 2.0", url = "http://www.apache.org/licenses/LICENSE-2.0.txt" ) @@ -32,11 +33,11 @@ class PomParserTest { "https://github.com/jmatsu/license-list-plugin.git", listOf("jmatsu1", "jmatsu2", "jmatsu3"), listOf( - PomParser.License( + LicenseSeed( name = "license1", url = "url1" ), - PomParser.License( + LicenseSeed( name = "license2", url = "url2" ) @@ -57,7 +58,7 @@ class PomParserTest { null, emptyList(), listOf( - PomParser.License( + LicenseSeed( name = null, url = null ) @@ -75,7 +76,7 @@ class PomParserTest { displayNameCandidates: List, associatedUrl: String?, copyrightHolders: List, - licenses: List + licenses: List ) { var pomFile: File? = null try { diff --git a/plugin/src/test/kotlin/io/github/jmatsu/license/presentation/MergerTest.kt b/plugin/src/test/kotlin/io/github/jmatsu/license/presentation/MergerTest.kt index 53e9b64..0266283 100644 --- a/plugin/src/test/kotlin/io/github/jmatsu/license/presentation/MergerTest.kt +++ b/plugin/src/test/kotlin/io/github/jmatsu/license/presentation/MergerTest.kt @@ -1,7 +1,7 @@ package io.github.jmatsu.license.presentation import io.github.jmatsu.license.Factory.provideArtifact -import io.github.jmatsu.license.internal.PomParser +import io.github.jmatsu.license.model.LicenseSeed import io.github.jmatsu.license.model.ResolveScope import io.github.jmatsu.license.model.ResolvedArtifact import io.github.jmatsu.license.model.ResolvedModuleIdentifier @@ -26,10 +26,10 @@ class MergerTest : MergeStrategy { name = "name1", version = VersionString("+") ), - pomFile = ResolvedPomFile( + metadata = ResolvedPomFile( associatedUrl = "http://example.com", displayNameCandidates = listOf("displayName1"), - licenses = listOf(PomParser.License(name = "licenseKeyNew", url = "http://example.com/length/28")), + licenses = listOf(LicenseSeed(name = "licenseKeyNew", url = "http://example.com/length/28")), copyrightHolders = listOf("copyrightHolder1") ) ) @@ -41,10 +41,10 @@ class MergerTest : MergeStrategy { name = "name4", version = VersionString("+") ), - pomFile = ResolvedPomFile( + metadata = ResolvedPomFile( associatedUrl = "http://example.com", displayNameCandidates = listOf("displayName1"), - licenses = listOf(PomParser.License(name = "Apache License 2.0", url = "http://example.com")), + licenses = listOf(LicenseSeed(name = "Apache License 2.0", url = "http://example.com")), copyrightHolders = listOf("copyrightHolder1") ) ) From 0d3666142374651f612c7194dfa7e5f43791d843 Mon Sep 17 00:00:00 2001 From: Jumpei Matsuda Date: Fri, 12 Jun 2020 09:39:20 +0900 Subject: [PATCH 2/5] Added a local lib --- .gitignore | 1 - example/app/lib/ktlint-html-reporter-0.2.0.jar | Bin 0 -> 16567 bytes 2 files changed, 1 deletion(-) create mode 100644 example/app/lib/ktlint-html-reporter-0.2.0.jar diff --git a/.gitignore b/.gitignore index b71d0f0..3cb0cc0 100644 --- a/.gitignore +++ b/.gitignore @@ -94,7 +94,6 @@ modules.xml .mtj.tmp/ # Package Files # -*.jar *.war *.nar *.ear diff --git a/example/app/lib/ktlint-html-reporter-0.2.0.jar b/example/app/lib/ktlint-html-reporter-0.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c58ba353c2008433f591e304058c9355f700e8d4 GIT binary patch literal 16567 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

9j*YfkD?lMWld+r<3C;)wXrcU|w{t@X3X19< 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%0ARZR33BwA&tNhdgR=69G8FhXkWMhgSK?1 zA8~l(>s$EiBeM|O!o^6JC(e#a#e}Co3%)18RT6Y%xA38$_Y|FMTa?MG=#;yS$*5MI z$Tgddb^Bd@9i|Ltalsr=N8dNgg(W|}Pv?G-Crqen#}hvr{+5rYwVV^*3Y ziBJ&Lz9}?*FK)OR%FxGlBaVqXU>WgUrM@@2v));Y_Bgil`c`#}ogFAgwFRP1pcC!X z-dU09e1hP0M(i{~)@_yU^xj#K>jVw4$# z^Iq;Zcd4|)vK^efyKQCPT>i&O%!bLj25Zv8zz z^^BKm+*jb3YsOw1mnm=O>{)dm+fbsp`3l}0k{m=~)|;k=>>ec4Df7L%n5>@9w{JM-s*n3-%1^=$ylAeX49_YJ_O@0=^&1{jA&DA`bz?CY!-U#vPeQ8|ujujO$*Fm}9Hu%AlHSSX2e z?YMQigFe+(L>_08qO8%^m-H&DN5THAvb8%6{WMO9@US*rT}6v>{xeN^|wB&;LCNovIWpDf#`U;s7bW_dfg76JFA@f?E zJ5#)P+*0E5gw?id4YOedQ2zra*E07gH*>*B>{aGM#evqs67IKEB(s&Qg>etGM_*+$ zr-e8=u>fB|9C;Mmlr3G{r~V7(6~6qUr+s=#gPWQk_oxp}tv~93KGC|>5xRJ9Ckk~p z7ec43^y>V@5CB-sOWl3Y?a*G(K8BArEblav{QR*iA}qc%LF3V%ee{p=H-sKQIA*fT z_D6*-MSw(@#oTXz<}><&_lgYR;l%f^o8_1N@gKZCl$ZV=Y(ht42N!cgW5@qRh4VJ) zB4l_O$@+5e|4Ru&TWeZVb0;%r16oHjcXLZy+TSRBw1&10#ncXhddCN|u^- zTzYh5VT5*gc$8|2N|I)Xj#7eVdW3vf zIj5I~1olnf=kFgE^v`1diXQoM@Xwa-Px12ohuA-nCI6z~7sBI9;P3bL6WHaY|H6>` zPXa#~lE1Z|0%s&O-LK5b-_PvjF*yIfsQbV2EPuuOmHqW6p1@0*??2s$ z|2h4CkN0~<|5v^Kc)xRJe#QHhMerxy68zu7`#miEE8eg5&VS-%zxi8u zzgIv1iuY?xiPX+2KvqC{}t%hN~=GCo-qDPpnp?$^(*49#U+0tdcW|v z|Eo*;XT*Q=V*Z-h{u9jx|8Jl%5;GJ3n^)!649TB}sU&{~@n1i`Uqh*XqOHA5@c+Me z^Iv2A8glv*i-6|8#QN6&KNY@&h5x7hT&90(Kc{b5_J3Ne{#dkseYJjFwEv;uo4?<` dl>hIRaCs@Hmv}W882Za6{-rSS4ad)a{|Bvg9KHYm literal 0 HcmV?d00001 From b0a4d01d55822504144c71a214be84e965d3ec69 Mon Sep 17 00:00:00 2001 From: Jumpei Matsuda Date: Fri, 12 Jun 2020 09:44:12 +0900 Subject: [PATCH 3/5] Fixed fixtures --- example/app/license-list/artifact-definition.yml | 8 ++++++++ example/fixtures/merge/expected-artifact-definition.yml | 8 ++++++++ example/fixtures/validate-artifact-definition.yml | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/example/app/license-list/artifact-definition.yml b/example/app/license-list/artifact-definition.yml index 06973a1..6976991 100644 --- a/example/app/license-list/artifact-definition.yml +++ b/example/app/license-list/artifact-definition.yml @@ -453,6 +453,14 @@ yellowBlueRelease: url: null copyrightHolders: [] licenses: [] + local-file: + - key: ktlint-html-reporter-0.2.0.jar + displayName: ktlint-html-reporter + url: https://github.com/mcassiano/ktlint-html-reporter + copyrightHolders: + - Matheus Candido + licenses: + - mit org.antlr: - key: antlr4 displayName: ANTLR 4 Tool diff --git a/example/fixtures/merge/expected-artifact-definition.yml b/example/fixtures/merge/expected-artifact-definition.yml index bc71543..941d679 100644 --- a/example/fixtures/merge/expected-artifact-definition.yml +++ b/example/fixtures/merge/expected-artifact-definition.yml @@ -117,6 +117,14 @@ yellowBlueRelease: url: null copyrightHolders: [] licenses: [] + local-file: + - key: ktlint-html-reporter-0.2.0.jar + displayName: ktlint-html-reporter + url: https://github.com/mcassiano/ktlint-html-reporter + copyrightHolders: + - Matheus Candido + licenses: + - mit org.antlr: - key: antlr4 displayName: ANTLR 4 Tool diff --git a/example/fixtures/validate-artifact-definition.yml b/example/fixtures/validate-artifact-definition.yml index 787c74c..ab8f155 100644 --- a/example/fixtures/validate-artifact-definition.yml +++ b/example/fixtures/validate-artifact-definition.yml @@ -461,6 +461,14 @@ yellowBlueRelease: url: null copyrightHolders: [] licenses: [] + local-file: + - key: ktlint-html-reporter-0.2.0.jar + displayName: ktlint-html-reporter + url: https://github.com/mcassiano/ktlint-html-reporter + copyrightHolders: + - Matheus Candido + licenses: + - mit org.antlr: - key: antlr4 displayName: ANTLR 4 Tool From 20609944e84f766383c1f7577aef528d2fe1b7b8 Mon Sep 17 00:00:00 2001 From: Jumpei Matsuda Date: Fri, 12 Jun 2020 09:52:12 +0900 Subject: [PATCH 4/5] Tweaked --- example/app/license-list/artifact-definition.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/example/app/license-list/artifact-definition.yml b/example/app/license-list/artifact-definition.yml index 6976991..e122120 100644 --- a/example/app/license-list/artifact-definition.yml +++ b/example/app/license-list/artifact-definition.yml @@ -455,12 +455,10 @@ yellowBlueRelease: licenses: [] local-file: - key: ktlint-html-reporter-0.2.0.jar - displayName: ktlint-html-reporter - url: https://github.com/mcassiano/ktlint-html-reporter - copyrightHolders: - - Matheus Candido - licenses: - - mit + displayName: ktlint-html-reporter-0.2.0 + url: null + copyrightHolders: [] + licenses: [] org.antlr: - key: antlr4 displayName: ANTLR 4 Tool From 93b402af4389db7a2ea2ca369e544ab6c2f30e8e Mon Sep 17 00:00:00 2001 From: Jumpei Matsuda Date: Fri, 12 Jun 2020 10:05:15 +0900 Subject: [PATCH 5/5] Fixed the correct state after merge --- .../fixtures/merge/expected-artifact-definition.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/example/fixtures/merge/expected-artifact-definition.yml b/example/fixtures/merge/expected-artifact-definition.yml index 941d679..e185397 100644 --- a/example/fixtures/merge/expected-artifact-definition.yml +++ b/example/fixtures/merge/expected-artifact-definition.yml @@ -119,12 +119,10 @@ yellowBlueRelease: licenses: [] local-file: - key: ktlint-html-reporter-0.2.0.jar - displayName: ktlint-html-reporter - url: https://github.com/mcassiano/ktlint-html-reporter - copyrightHolders: - - Matheus Candido - licenses: - - mit + displayName: ktlint-html-reporter-0.2.0 + url: null + copyrightHolders: [] + licenses: [] org.antlr: - key: antlr4 displayName: ANTLR 4 Tool