[CLJS-418] Unspecified dependency on google-closure-library-third-party Created: 16/Nov/12 Updated: 27/Jul/13 Resolved: 16/Feb/13
|Reporter:||Stuart Sierra||Assignee:||Stuart Sierra|
Temporary fix to this issue: Add the G.Closure Library third-party extensions as a project dependency.
We currently distribute the Google Closure Library in two separate JARs: the main library and the third-party extensions. We do this because the third-party extensions are covered by different licenses.
But, as it turns out, various classes in the main library have explicit dependencies on things in the third-party extensions. See See also this G.Closure mailing list discussion.
As a result, the ClojureScript browser-connected REPL has a transitive dependency on the Google Closure Library third-party extensions. This manifests as an error in script/cljsc and a NullPointerException in lein-cljsbuild.
See also lein-cljsbuild issue #155.
It seems that the dependency on third-party extensions is unavoidable. There are several possible fixes:
1. Release a new G.Closure Library JAR with a declared dependency on the third-party extensions JAR. This best reflects the actual dependency relationships.
2. Release a new G.Closure Library JAR with the third-party extensions included in the JAR. This would make it harder to exclude the third-party-licensed code from projects which do not actually require it.
3. Release a new version of ClojureScript with a declared dependency on the third-party extensions JAR. This makes the dependency more visible to ClojureScript developers.
Regardless of the approach taken, developers can always use explicit dependencies/exclusions to choose which version of the G.Closure library to include in their projects.
|Comment by Herwig Hochleitner [ 04/Dec/12 7:10 PM ]|
Attached patch implements option 1
The generated closure-library depends on the old clojure-library-third-party.
|Comment by Evan Mezeske [ 16/Dec/12 8:29 PM ]|
I added a workaround for this so that I can release lein-cljsbuild without breaking every single project that uses it: https://github.com/emezeske/lein-cljsbuild/issues/163 .
I would like to revert this workaround ASAP. I'm going to do a bad job of maintaining the right version of the third party libraries, and it will cause problems down the road.
|Comment by Chas Emerick [ 27/Jan/13 5:37 PM ]|
Option 1 is proper, 3 is acceptable. Any solution will do though; drove myself nuts with this today for longer than I'd like to admit before I discovered this ticket.
|Comment by David Nolen [ 27/Jan/13 5:41 PM ]|
Is everyone cool with option 1? It would be nice to resolve this one soon as people are running into non-working browser REPLs.
|Comment by Michał Marczyk [ 27/Jan/13 7:29 PM ]|
+1 for option 1.
|Comment by Stuart Sierra [ 03/Feb/13 3:50 PM ]|
Deployed new version of Google Closure library to Sonatype OSS today. Please try it out.
This release declares an explicit dependency from google-closure-library on google-closure-library-third-party (Option 1 in the ticket description).
It will be available in the Maven Central repository within 24 hours. Until then, you can get it from the Sonatype repository with these instructions:
If it works, we can update the ClojureScript POM to depend on it.
|Comment by Stuart Sierra [ 16/Feb/13 2:59 PM ]|
pom.template updated in commit f2e0d9050a1b