2024 Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面以了解更多关于这一模式的信息。

0
tools.deps
重新标记

我对clj -Spom命令背后的逻辑有一些疑问

  • 为什么在最顶级添加一个sourceDirectory标签?这似乎是一个无效的标签,mvn validate会因识别不到的标签错误而抱怨。

  • 每次我重新运行clj -Spom,都会创建一个新的sourceDirectory标签,添加了重复的值,这是故意的吗?

  • 为什么只使用:src中的第一个元素来填充sourceDirectory,而忽略其他元素?

1 个答案

0

我无法复现您所看到的——它应该添加到<project>/<build>/<sourceDirectory>。您可以检查一下您是否正在使用最新版本的 clj(目前是 1.10.1.536)。如果您仍然看到这种行为,请提供您的 clj 版本(clj -Sdescribe)、java 版本(java -version)和相关 deps.edn 以供复现。

关于您之前的问题,POM中只允许有一个源目录槽位。有很多插件和配置设置可以解决这个问题,但您到底做什么取决于您所做的事情。在这里做选择不如直接跳过第一个目录之后的所有目录。如果您指定了其他构建配置,它应该保持不变。

by
感谢您的回答 @alexmiller

要重现我所描述的第一个和第二个问题,请在只含有一个 `pom.xml` 文件且没有 `//` 的目录中运行 `clj -Spom` ,例如:

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>foo</groupId>
  <artifactId>foo</artifactId>
  <version>0.1.0</version>
  <name>foo</name>
</project>
```

光有 `pom.xml` 文件,目录中没有其他文件。
每次运行 `clj -Spom` ,就会在 `<project>/<sourceDirectory>` 中添加一个新的标签。

我使用最新的clj版本进行了测试

clj -Sdescribe

```
{:version "1.10.1.536"
 :config-files ["/nix/store/9fqcvxrqayhhn1b87ys7lwnlqdv2ja5x-clojure-1.10.1.536/deps.edn" "/home/jlle/.clojure/deps.edn" ]
 :config-user "/home/jlle/.clojure/deps.edn"
 :config-project "deps.edn"
 :install-dir "/nix/store/9fqcvxrqayhhn1b87ys7lwnlqdv2ja5x-clojure-1.10.1.536"
 :config-dir "/home/jlle/.clojure"
 :cache-dir "/home/jlle/.clojure/.cpcache"
 :force false
 :repro false
 :resolve-aliases ""
 :classpath-aliases ""
 :jvm-aliases ""
 :main-aliases ""
 :all-aliases ""}
```


java -version

```
openjdk版本 "11.0.6-internal" 2020-01-14
OpenJDK运行环境(构建 11.0.6-internal+0-adhoc..jdk11u-jdk-11.0.6-ga)
OpenJDK 64位服务器虚拟机(构建 11.0.6-internal+0-adhoc..jdk11u-jdk-11.0.6-ga,混合模式)
```

我没有提供 `deps.edn` 文件,因为我可以在没有任何文件的情况下重现它。
by
谢谢,这帮了我。已记下 https://clojure.atlassian.net/browse/TDEPS-152 并会尽快解决。
...