如何从项目中排除项目stax-utils依赖关系?

时间:2012-07-29 20:52:36

标签: clojure leiningen

我正在运行Debian Wheezy,openjdk-7-jre,clojure 1.4.0和leiningen-1.7.1,所有这些都是从官方仓库安装的。

我有一个像这样的project.clj:

(defproject guess-film "1.0.0-SNAPSHOT"
  :description "FIXME"
  :dependencies [
    [org.clojure/clojure "1.4.0"],
    [clj-http "0.5.0"],
    [clj-tagsoup "0.3.0" :exclusions [net.java.dev.stax-utils/stax-utils]]
  ]
  :main guess-film.core
)

正如你在那个阶段所看到的,我排除了stax-utils,实际上这是在clj-tagsoup Github页面上描述的。

然后我有这个src / guess-film / core.clj:

ns guess-film.core
    (:require
        [clj-http.client :as client]
        [pl.danieljanus.tagsoup :as parser :refer [parse parse-string]] :verbose
    )
)

当我尝试

lein repl
它崩溃了,我认为是因为不满意的stax-utils:

...
(clojure.core/load "/pl/danieljanus/tagsoup")
(clojure.core/load "/clojure/zip")
(clojure.core/in-ns 'pl.danieljanus.tagsoup)
(clojure.core/alias 'zip 'clojure.zip)
(clojure.core/load "/clojure/xml")
(clojure.core/in-ns 'pl.danieljanus.tagsoup)
(clojure.core/alias 'xml 'clojure.xml)
(clojure.core/load "/clojure/data/xml")
(clojure.core/in-ns 'clojure.data.xml)
(clojure.core/alias 'str 'clojure.string)
(clojure.core/in-ns 'pl.danieljanus.tagsoup)
(clojure.core/alias 'lazy-xml 'clojure.data.xml)
ClassNotFoundException javanet.staxutils.ContentHandlerToXMLEventWriter  java.net.URLClassLoader$1.run (URLClassLoader.java:366)

我试图通过使用:refer来逃避lazy-xml的加载,但是我认为这不起作用。此外,我尝试了“:使用...:仅[解析解析字符串]”也没有成功。

我只是不喜欢加载我不会使用的东西:)

它是否尝试加载lazy-xml clj-tagsoup失败? 如果我无法摆脱这种依赖性,它会不会受到影响?

1 个答案:

答案 0 :(得分:1)

clj-tags是导入javanet.staxutils.Content ...类的那个,所以我认为你可以做很多事情。

它不会受到任何性能影响,只加载另一个类,它不会产生太大的影响,也不会占用太多内存。