2024 年 Clojure 各地情况调查!中分享您的想法。

欢迎!请参阅关于页面了解更多关于这个网站如何运作的信息。

+1
tools.deps

在 Java 9 下,每次使用 clj -Spom 更新现有的 pom 都会导致添加新的换行。

`
/private/tmp/pom-bug> head pom.xml
<?xml version="1.0" encoding="UTF-8"?>

4.0.0
pom-bug
pom-bug
0.1.0
pom-bug

<dependency>
  <groupId>org.clojure</groupId>

/private/tmp/pom-bug> clj -Spom 2>/dev/null
/private/tmp/pom-bug> head pom.xml
<?xml version="1.0" encoding="UTF-8"?>

4.0.0

pom-bug

pom-bug

0.1.0
/private/tmp/pom-bug> clj -Spom 2>/dev/null
/private/tmp/pom-bug> head pom.xml
<?xml version="1.0" encoding="UTF-8"?>

4.0.0

pom-bug

`

值得注意的是,这仅在 Java 9 下发生。Java 1.8.0_152 的工作符合预期。

4 个答案

+1

选择
 
最佳答案

一种临时的解决方案是在解析 pom 文件时添加 {:skip-whitespace :true}。有了这个选项,最后的缩进就正确了。

同时,我正在使用以下代码来生成/更新 pom 文件

(require '[clojure.tools.deps.alpha.script.generate-manifest :as manifest]
         '[clojure.data.xml :as xml])
(alter-var-root #'xml/event-seq (fn [f]
                                  (fn [source opts]
                                    (f source (merge {:skip-whitespace true} opts)))))
(generate-manifest/-main "--gen" "pom" "--config-files" "deps.edn")
在 clj 1.10.1.478 中已修复 - 感谢!
0

评论由:alexmiller发布

-Spom使用data.xml,它使用了javax.xml.transform.Transformer,该变压器在Java 9中经历了变化,这可能是由于Xerces-J 2.11.0的更新(https://xerces.apache.org/xerces2-j/releases.html)。以下是描述其中一些影响的博客:http://java9.wtf/xml-transformer/。可能还有相关内容:https://bugs.java.com/view_bug.do?bug_id=JDK-8087303

0

评论由:alexmiller发布

在DXML-53中提出了此问题,因为这确实应该在那里修复。

0
参考资料:https://clojure.atlassian.net/browse/TDEPS-29(由potetm报告)
...