From a62594bded95a5c82519426d17e9d75c2a2fc1c3 Mon Sep 17 00:00:00 2001 From: anthogez Date: Mon, 29 Mar 2021 12:10:08 +0300 Subject: [PATCH] feat: use break cycles logic of depgraph - Deleted findCycles and breakCycles logic from snyk-gradle-plugin - Multi-config fixture plugin.test.ts has top level deps amount number aligned and with correct count, we were appending transitive deps as top to avoid loosing them due of lack of cycle/break support in dep-graph lib. - Dependency **org.jetbrains.kotlin:kotlin-stdlib** is no longer available as direct dep in **kotlin.test.ts** (it was wrong) as it's a transitive dependency see screenshot below. It was being `appended` as top due of the lack of cycle/break support in dep-graph lib dependencies - Added @snyk/dep-graph changes v1.27.1 remove cache in pathsToRoot v1.27 break cyclic graphs when converting into tree v1.26 support cycles in pkgPathsToRoot and countPathsToRoot --- package.json | 2 +- .../gradle-prune-repeated-deps/gradle-pruned-dep-graph.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8b3a80c271..9fb02e1ea0 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "snyk-cpp-plugin": "2.2.1", "snyk-docker-plugin": "4.19.3", "snyk-go-plugin": "1.17.0", - "snyk-gradle-plugin": "3.13.2", + "snyk-gradle-plugin": "3.14.0", "snyk-module": "3.1.0", "snyk-mvn-plugin": "2.25.3", "snyk-nodejs-lockfile-parser": "1.31.1", diff --git a/test/fixtures/gradle-prune-repeated-deps/gradle-pruned-dep-graph.json b/test/fixtures/gradle-prune-repeated-deps/gradle-pruned-dep-graph.json index 558aa7ed67..718a8ff26f 100644 --- a/test/fixtures/gradle-prune-repeated-deps/gradle-pruned-dep-graph.json +++ b/test/fixtures/gradle-prune-repeated-deps/gradle-pruned-dep-graph.json @@ -1 +1 @@ -{"schemaVersion":"1.2.0","pkgManager":{"name":"gradle"},"pkgs":[{"id":"workspaces@unspecified","info":{"name":"workspaces","version":"unspecified"}},{"id":"axis:axis-jaxrpc@1.3","info":{"name":"axis:axis-jaxrpc","version":"1.3"}},{"id":"axis:axis-saaj@1.3","info":{"name":"axis:axis-saaj","version":"1.3"}},{"id":"commons-logging:commons-logging@1.0.4","info":{"name":"commons-logging:commons-logging","version":"1.0.4"}},{"id":"commons-discovery:commons-discovery@0.2","info":{"name":"commons-discovery:commons-discovery","version":"0.2"}},{"id":"wsdl4j:wsdl4j@1.5.1","info":{"name":"wsdl4j:wsdl4j","version":"1.5.1"}},{"id":"axis:axis@1.3","info":{"name":"axis:axis","version":"1.3"}},{"id":"batik:batik-dom@1.6","info":{"name":"batik:batik-dom","version":"1.6"}},{"id":"com.google.protobuf:protobuf-java@3.0.0","info":{"name":"com.google.protobuf:protobuf-java","version":"3.0.0"}},{"id":"com.android.tools.analytics-library:protos@25.3.0","info":{"name":"com.android.tools.analytics-library:protos","version":"25.3.0"}},{"id":"com.android.tools:annotations@25.2.0","info":{"name":"com.android.tools:annotations","version":"25.2.0"}},{"id":"com.google.guava:guava@18.0","info":{"name":"com.google.guava:guava","version":"18.0"}},{"id":"com.android.tools:common@25.3.0","info":{"name":"com.android.tools:common","version":"25.3.0"}},{"id":"com.google.code.gson:gson@2.2.4","info":{"name":"com.google.code.gson:gson","version":"2.2.4"}},{"id":"com.android.tools.analytics-library:shared@25.3.0","info":{"name":"com.android.tools.analytics-library:shared","version":"25.3.0"}},{"id":"com.android.tools.analytics-library:tracker@25.3.0","info":{"name":"com.android.tools.analytics-library:tracker","version":"25.3.0"}},{"id":"com.android.tools.build:builder-model@2.3.0","info":{"name":"com.android.tools.build:builder-model","version":"2.3.0"}},{"id":"com.android.tools.build:builder-test-api@2.3.0","info":{"name":"com.android.tools.build:builder-test-api","version":"2.3.0"}},{"id":"com.android.tools.ddms:ddmlib@25.3.0","info":{"name":"com.android.tools.ddms:ddmlib","version":"25.3.0"}},{"id":"com.android.tools.jack:jack-api@0.13.0","info":{"name":"com.android.tools.jack:jack-api","version":"0.13.0"}},{"id":"com.android.tools.jill:jill-api@0.10.0","info":{"name":"com.android.tools.jill:jill-api","version":"0.10.0"}},{"id":"net.sf.kxml:kxml2@2.3.0","info":{"name":"net.sf.kxml:kxml2","version":"2.3.0"}},{"id":"org.bouncycastle:bcprov-jdk15on@1.48","info":{"name":"org.bouncycastle:bcprov-jdk15on","version":"1.48"}},{"id":"org.bouncycastle:bcpkix-jdk15on@1.48","info":{"name":"org.bouncycastle:bcpkix-jdk15on","version":"1.48"}},{"id":"com.android.tools:sdk-common@25.3.0","info":{"name":"com.android.tools:sdk-common","version":"25.3.0"}},{"id":"com.squareup:javawriter@2.5.0","info":{"name":"com.squareup:javawriter","version":"2.5.0"}},{"id":"org.ow2.asm:asm@5.0.4","info":{"name":"org.ow2.asm:asm","version":"5.0.4"}},{"id":"org.ow2.asm:asm-tree@5.0.4","info":{"name":"org.ow2.asm:asm-tree","version":"5.0.4"}},{"id":"com.android.tools.build:builder@2.3.0","info":{"name":"com.android.tools.build:builder","version":"2.3.0"}},{"id":"com.android.tools.build:manifest-merger@25.3.0","info":{"name":"com.android.tools.build:manifest-merger","version":"25.3.0"}},{"id":"com.intellij:annotations@12.0","info":{"name":"com.intellij:annotations","version":"12.0"}},{"id":"com.android.tools.layoutlib:layoutlib-api@25.3.0","info":{"name":"com.android.tools.layoutlib:layoutlib-api","version":"25.3.0"}},{"id":"com.google.jimfs:jimfs@1.1","info":{"name":"com.google.jimfs:jimfs","version":"1.1"}},{"id":"org.apache.commons:commons-compress@1.8.1","info":{"name":"org.apache.commons:commons-compress","version":"1.8.1"}},{"id":"com.android.tools:repository@25.3.0","info":{"name":"com.android.tools:repository","version":"25.3.0"}},{"id":"com.android.tools:dvlib@25.3.0","info":{"name":"com.android.tools:dvlib","version":"25.3.0"}},{"id":"com.android.tools:sdklib@25.3.0","info":{"name":"com.android.tools:sdklib","version":"25.3.0"}},{"id":"commons-codec:commons-codec@1.4","info":{"name":"commons-codec:commons-codec","version":"1.4"}},{"id":"commons-logging:commons-logging@1.1.1","info":{"name":"commons-logging:commons-logging","version":"1.1.1"}},{"id":"org.apache.httpcomponents:httpcore@4.1","info":{"name":"org.apache.httpcomponents:httpcore","version":"4.1"}},{"id":"org.apache.httpcomponents:httpclient@4.1.1","info":{"name":"org.apache.httpcomponents:httpclient","version":"4.1.1"}},{"id":"org.apache.httpcomponents:httpmime@4.1","info":{"name":"org.apache.httpcomponents:httpmime","version":"4.1"}}],"graph":{"rootNodeId":"root-node","nodes":[{"nodeId":"root-node","pkgId":"workspaces@unspecified","deps":[{"nodeId":"axis:axis@1.3"},{"nodeId":"batik:batik-dom@1.6"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0"},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0"},{"nodeId":"com.android.tools.build:builder@2.3.0"},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0"},{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0"},{"nodeId":"com.android.tools:repository@25.3.0"},{"nodeId":"com.android.tools:sdklib@25.3.0"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"commons-discovery:commons-discovery@0.2"},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1"},{"nodeId":"org.apache.httpcomponents:httpmime@4.1"}]},{"nodeId":"axis:axis-jaxrpc@1.3","pkgId":"axis:axis-jaxrpc@1.3","deps":[]},{"nodeId":"axis:axis-saaj@1.3","pkgId":"axis:axis-saaj@1.3","deps":[]},{"nodeId":"commons-logging:commons-logging@1.0.4","pkgId":"commons-logging:commons-logging@1.0.4","deps":[]},{"nodeId":"commons-discovery:commons-discovery@0.2","pkgId":"commons-discovery:commons-discovery@0.2","deps":[{"nodeId":"commons-logging:commons-logging@1.0.4"}]},{"nodeId":"wsdl4j:wsdl4j@1.5.1","pkgId":"wsdl4j:wsdl4j@1.5.1","deps":[]},{"nodeId":"axis:axis@1.3","pkgId":"axis:axis@1.3","deps":[{"nodeId":"axis:axis-jaxrpc@1.3"},{"nodeId":"axis:axis-saaj@1.3"},{"nodeId":"commons-discovery:commons-discovery@0.2"},{"nodeId":"commons-logging:commons-logging@1.0.4"},{"nodeId":"wsdl4j:wsdl4j@1.5.1"}]},{"nodeId":"batik:batik-dom@1.6","pkgId":"batik:batik-dom@1.6","deps":[]},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0","pkgId":"com.google.protobuf:protobuf-java@3.0.0","deps":[]},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools:annotations@25.2.0","pkgId":"com.android.tools:annotations@25.2.0","deps":[]},{"nodeId":"com.google.guava:guava@18.0","pkgId":"com.google.guava:guava@18.0","deps":[]},{"nodeId":"com.android.tools:common@25.3.0|1","pkgId":"com.android.tools:common@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.android.tools:common@25.3.0|2","pkgId":"com.android.tools:common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.google.code.gson:gson@2.2.4","pkgId":"com.google.code.gson:gson@2.2.4","deps":[]},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0","pkgId":"com.android.tools.analytics-library:shared@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0","pkgId":"com.android.tools.analytics-library:tracker@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-model@2.3.0|2","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"}]},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2"}]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.jack:jack-api@0.13.0","pkgId":"com.android.tools.jack:jack-api@0.13.0","deps":[]},{"nodeId":"com.android.tools.jill:jill-api@0.10.0","pkgId":"com.android.tools.jill:jill-api@0.10.0","deps":[]},{"nodeId":"net.sf.kxml:kxml2@2.3.0","pkgId":"net.sf.kxml:kxml2@2.3.0","deps":[]},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48","pkgId":"org.bouncycastle:bcprov-jdk15on@1.48","deps":[]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:sdk-common@25.3.0","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[{"nodeId":"com.android.tools.build:builder-model@2.3.0|2"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"com.squareup:javawriter@2.5.0","pkgId":"com.squareup:javawriter@2.5.0","deps":[]},{"nodeId":"org.ow2.asm:asm@5.0.4","pkgId":"org.ow2.asm:asm@5.0.4","deps":[]},{"nodeId":"org.ow2.asm:asm-tree@5.0.4","pkgId":"org.ow2.asm:asm-tree@5.0.4","deps":[{"nodeId":"org.ow2.asm:asm@5.0.4"}]},{"nodeId":"com.android.tools.build:builder@2.3.0","pkgId":"com.android.tools.build:builder@2.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0"},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1"},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1"},{"nodeId":"com.android.tools.jack:jack-api@0.13.0"},{"nodeId":"com.android.tools.jill:jill-api@0.10.0"},{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"com.android.tools:sdk-common@25.3.0"},{"nodeId":"com.squareup:javawriter@2.5.0"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"},{"nodeId":"org.ow2.asm:asm@5.0.4"},{"nodeId":"org.ow2.asm:asm-tree@5.0.4"}]},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0","pkgId":"com.android.tools.build:manifest-merger@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"com.android.tools:sdk-common@25.3.0"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.intellij:annotations@12.0","pkgId":"com.intellij:annotations@12.0","deps":[]},{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","pkgId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.intellij:annotations@12.0"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.google.jimfs:jimfs@1.1","pkgId":"com.google.jimfs:jimfs@1.1","deps":[{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"org.apache.commons:commons-compress@1.8.1","pkgId":"org.apache.commons:commons-compress@1.8.1","deps":[]},{"nodeId":"com.android.tools:repository@25.3.0","pkgId":"com.android.tools:repository@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.jimfs:jimfs@1.1"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"}]},{"nodeId":"com.android.tools:dvlib@25.3.0","pkgId":"com.android.tools:dvlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"}]},{"nodeId":"com.android.tools:sdklib@25.3.0","pkgId":"com.android.tools:sdklib@25.3.0","deps":[{"nodeId":"com.android.tools:dvlib@25.3.0"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"}]},{"nodeId":"commons-codec:commons-codec@1.4","pkgId":"commons-codec:commons-codec@1.4","deps":[]},{"nodeId":"commons-logging:commons-logging@1.1.1","pkgId":"commons-logging:commons-logging@1.1.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpcore@4.1","pkgId":"org.apache.httpcomponents:httpcore@4.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1","pkgId":"org.apache.httpcomponents:httpclient@4.1.1","deps":[{"nodeId":"commons-codec:commons-codec@1.4"},{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]},{"nodeId":"org.apache.httpcomponents:httpmime@4.1","pkgId":"org.apache.httpcomponents:httpmime@4.1","deps":[{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]}]}} \ No newline at end of file +{"schemaVersion":"1.2.0","pkgManager":{"name":"gradle"},"pkgs":[{"id":"workspaces@unspecified","info":{"name":"workspaces","version":"unspecified"}},{"id":"axis:axis-jaxrpc@1.3","info":{"name":"axis:axis-jaxrpc","version":"1.3"}},{"id":"axis:axis-saaj@1.3","info":{"name":"axis:axis-saaj","version":"1.3"}},{"id":"commons-logging:commons-logging@1.0.4","info":{"name":"commons-logging:commons-logging","version":"1.0.4"}},{"id":"commons-discovery:commons-discovery@0.2","info":{"name":"commons-discovery:commons-discovery","version":"0.2"}},{"id":"wsdl4j:wsdl4j@1.5.1","info":{"name":"wsdl4j:wsdl4j","version":"1.5.1"}},{"id":"axis:axis@1.3","info":{"name":"axis:axis","version":"1.3"}},{"id":"batik:batik-dom@1.6","info":{"name":"batik:batik-dom","version":"1.6"}},{"id":"com.android.tools.analytics-library:protos@25.3.0","info":{"name":"com.android.tools.analytics-library:protos","version":"25.3.0"}},{"id":"com.android.tools.analytics-library:shared@25.3.0","info":{"name":"com.android.tools.analytics-library:shared","version":"25.3.0"}},{"id":"com.google.protobuf:protobuf-java@3.0.0","info":{"name":"com.google.protobuf:protobuf-java","version":"3.0.0"}},{"id":"com.android.tools:annotations@25.2.0","info":{"name":"com.android.tools:annotations","version":"25.2.0"}},{"id":"com.android.tools:common@25.3.0","info":{"name":"com.android.tools:common","version":"25.3.0"}},{"id":"com.google.code.gson:gson@2.2.4","info":{"name":"com.google.code.gson:gson","version":"2.2.4"}},{"id":"com.google.guava:guava@18.0","info":{"name":"com.google.guava:guava","version":"18.0"}},{"id":"com.android.tools.analytics-library:tracker@25.3.0","info":{"name":"com.android.tools.analytics-library:tracker","version":"25.3.0"}},{"id":"com.android.tools.build:builder-model@2.3.0","info":{"name":"com.android.tools.build:builder-model","version":"2.3.0"}},{"id":"com.android.tools.build:builder-test-api@2.3.0","info":{"name":"com.android.tools.build:builder-test-api","version":"2.3.0"}},{"id":"net.sf.kxml:kxml2@2.3.0","info":{"name":"net.sf.kxml:kxml2","version":"2.3.0"}},{"id":"com.android.tools.ddms:ddmlib@25.3.0","info":{"name":"com.android.tools.ddms:ddmlib","version":"25.3.0"}},{"id":"com.intellij:annotations@12.0","info":{"name":"com.intellij:annotations","version":"12.0"}},{"id":"com.android.tools.layoutlib:layoutlib-api@25.3.0","info":{"name":"com.android.tools.layoutlib:layoutlib-api","version":"25.3.0"}},{"id":"com.android.tools:dvlib@25.3.0","info":{"name":"com.android.tools:dvlib","version":"25.3.0"}},{"id":"com.google.jimfs:jimfs@1.1","info":{"name":"com.google.jimfs:jimfs","version":"1.1"}},{"id":"org.apache.commons:commons-compress@1.8.1","info":{"name":"org.apache.commons:commons-compress","version":"1.8.1"}},{"id":"com.android.tools:repository@25.3.0","info":{"name":"com.android.tools:repository","version":"25.3.0"}},{"id":"commons-codec:commons-codec@1.4","info":{"name":"commons-codec:commons-codec","version":"1.4"}},{"id":"commons-logging:commons-logging@1.1.1","info":{"name":"commons-logging:commons-logging","version":"1.1.1"}},{"id":"org.apache.httpcomponents:httpcore@4.1","info":{"name":"org.apache.httpcomponents:httpcore","version":"4.1"}},{"id":"org.apache.httpcomponents:httpclient@4.1.1","info":{"name":"org.apache.httpcomponents:httpclient","version":"4.1.1"}},{"id":"org.apache.httpcomponents:httpmime@4.1","info":{"name":"org.apache.httpcomponents:httpmime","version":"4.1"}},{"id":"com.android.tools:sdklib@25.3.0","info":{"name":"com.android.tools:sdklib","version":"25.3.0"}},{"id":"org.bouncycastle:bcprov-jdk15on@1.48","info":{"name":"org.bouncycastle:bcprov-jdk15on","version":"1.48"}},{"id":"org.bouncycastle:bcpkix-jdk15on@1.48","info":{"name":"org.bouncycastle:bcpkix-jdk15on","version":"1.48"}},{"id":"com.android.tools:sdk-common@25.3.0","info":{"name":"com.android.tools:sdk-common","version":"25.3.0"}},{"id":"com.android.tools.build:manifest-merger@25.3.0","info":{"name":"com.android.tools.build:manifest-merger","version":"25.3.0"}},{"id":"com.android.tools.jack:jack-api@0.13.0","info":{"name":"com.android.tools.jack:jack-api","version":"0.13.0"}},{"id":"com.android.tools.jill:jill-api@0.10.0","info":{"name":"com.android.tools.jill:jill-api","version":"0.10.0"}},{"id":"com.squareup:javawriter@2.5.0","info":{"name":"com.squareup:javawriter","version":"2.5.0"}},{"id":"org.ow2.asm:asm@5.0.4","info":{"name":"org.ow2.asm:asm","version":"5.0.4"}},{"id":"org.ow2.asm:asm-tree@5.0.4","info":{"name":"org.ow2.asm:asm-tree","version":"5.0.4"}},{"id":"com.android.tools.build:builder@2.3.0","info":{"name":"com.android.tools.build:builder","version":"2.3.0"}}],"graph":{"rootNodeId":"root-node","nodes":[{"nodeId":"root-node","pkgId":"workspaces@unspecified","deps":[{"nodeId":"axis:axis@1.3"},{"nodeId":"batik:batik-dom@1.6"},{"nodeId":"com.android.tools.build:builder@2.3.0"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"commons-discovery:commons-discovery@0.2"}]},{"nodeId":"axis:axis-jaxrpc@1.3","pkgId":"axis:axis-jaxrpc@1.3","deps":[]},{"nodeId":"axis:axis-saaj@1.3","pkgId":"axis:axis-saaj@1.3","deps":[]},{"nodeId":"commons-logging:commons-logging@1.0.4","pkgId":"commons-logging:commons-logging@1.0.4","deps":[]},{"nodeId":"commons-discovery:commons-discovery@0.2","pkgId":"commons-discovery:commons-discovery@0.2","deps":[{"nodeId":"commons-logging:commons-logging@1.0.4"}]},{"nodeId":"wsdl4j:wsdl4j@1.5.1","pkgId":"wsdl4j:wsdl4j@1.5.1","deps":[]},{"nodeId":"axis:axis@1.3","pkgId":"axis:axis@1.3","deps":[{"nodeId":"axis:axis-jaxrpc@1.3"},{"nodeId":"axis:axis-saaj@1.3"},{"nodeId":"commons-discovery:commons-discovery@0.2"},{"nodeId":"commons-logging:commons-logging@1.0.4"},{"nodeId":"wsdl4j:wsdl4j@1.5.1"}]},{"nodeId":"batik:batik-dom@1.6","pkgId":"batik:batik-dom@1.6","deps":[]},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|2","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|1","pkgId":"com.android.tools.analytics-library:shared@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|2","pkgId":"com.android.tools.analytics-library:shared@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|2"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0","pkgId":"com.google.protobuf:protobuf-java@3.0.0","deps":[]},{"nodeId":"com.android.tools:annotations@25.2.0","pkgId":"com.android.tools:annotations@25.2.0","deps":[]},{"nodeId":"com.android.tools:common@25.3.0|1","pkgId":"com.android.tools:common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:common@25.3.0|2","pkgId":"com.android.tools:common@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.google.code.gson:gson@2.2.4","pkgId":"com.google.code.gson:gson@2.2.4","deps":[]},{"nodeId":"com.google.guava:guava@18.0","pkgId":"com.google.guava:guava@18.0","deps":[]},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0","pkgId":"com.android.tools.analytics-library:tracker@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|2"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-model@2.3.0|2","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"}]},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1"}]},{"nodeId":"net.sf.kxml:kxml2@2.3.0","pkgId":"net.sf.kxml:kxml2@2.3.0","deps":[]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.intellij:annotations@12.0","pkgId":"com.intellij:annotations@12.0","deps":[]},{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","pkgId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.intellij:annotations@12.0"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools:dvlib@25.3.0","pkgId":"com.android.tools:dvlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"}]},{"nodeId":"com.google.jimfs:jimfs@1.1","pkgId":"com.google.jimfs:jimfs@1.1","deps":[{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"org.apache.commons:commons-compress@1.8.1","pkgId":"org.apache.commons:commons-compress@1.8.1","deps":[]},{"nodeId":"com.android.tools:repository@25.3.0","pkgId":"com.android.tools:repository@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.jimfs:jimfs@1.1"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"}]},{"nodeId":"commons-codec:commons-codec@1.4","pkgId":"commons-codec:commons-codec@1.4","deps":[]},{"nodeId":"commons-logging:commons-logging@1.1.1","pkgId":"commons-logging:commons-logging@1.1.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpcore@4.1","pkgId":"org.apache.httpcomponents:httpcore@4.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1","pkgId":"org.apache.httpcomponents:httpclient@4.1.1","deps":[{"nodeId":"commons-codec:commons-codec@1.4"},{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]},{"nodeId":"org.apache.httpcomponents:httpmime@4.1","pkgId":"org.apache.httpcomponents:httpmime@4.1","deps":[{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]},{"nodeId":"com.android.tools:sdklib@25.3.0|1","pkgId":"com.android.tools:sdklib@25.3.0","deps":[{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0"},{"nodeId":"com.android.tools:dvlib@25.3.0"},{"nodeId":"com.android.tools:repository@25.3.0"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1"},{"nodeId":"org.apache.httpcomponents:httpmime@4.1"}]},{"nodeId":"com.android.tools:sdklib@25.3.0|2","pkgId":"com.android.tools:sdklib@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48","pkgId":"org.bouncycastle:bcprov-jdk15on@1.48","deps":[]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:sdk-common@25.3.0|1","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[{"nodeId":"com.android.tools.build:builder-model@2.3.0|2"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2"},{"nodeId":"com.android.tools:sdklib@25.3.0|1"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"com.android.tools:sdk-common@25.3.0|2","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0","pkgId":"com.android.tools.build:manifest-merger@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.android.tools:sdk-common@25.3.0|1"},{"nodeId":"com.android.tools:sdklib@25.3.0|2"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.jack:jack-api@0.13.0","pkgId":"com.android.tools.jack:jack-api@0.13.0","deps":[]},{"nodeId":"com.android.tools.jill:jill-api@0.10.0","pkgId":"com.android.tools.jill:jill-api@0.10.0","deps":[]},{"nodeId":"com.squareup:javawriter@2.5.0","pkgId":"com.squareup:javawriter@2.5.0","deps":[]},{"nodeId":"org.ow2.asm:asm@5.0.4","pkgId":"org.ow2.asm:asm@5.0.4","deps":[]},{"nodeId":"org.ow2.asm:asm-tree@5.0.4","pkgId":"org.ow2.asm:asm-tree@5.0.4","deps":[{"nodeId":"org.ow2.asm:asm@5.0.4"}]},{"nodeId":"com.android.tools.build:builder@2.3.0","pkgId":"com.android.tools.build:builder@2.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0"},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1"},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0"},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2"},{"nodeId":"com.android.tools.jack:jack-api@0.13.0"},{"nodeId":"com.android.tools.jill:jill-api@0.10.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.android.tools:sdk-common@25.3.0|2"},{"nodeId":"com.android.tools:sdklib@25.3.0|2"},{"nodeId":"com.squareup:javawriter@2.5.0"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"},{"nodeId":"org.ow2.asm:asm@5.0.4"},{"nodeId":"org.ow2.asm:asm-tree@5.0.4"}]}]}} \ No newline at end of file