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

欢迎!请查看关于页面以了解更多关于此功能的信息。

0
工具.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文件中只有一个源目录插槽。有很多插件和配置设置可以解决这个问题,但你所做的具体取决于你所做的事情。在这里不做选择的话,-Spom将会跳过第一个目录之后的所有目录。如果您指定了其他构建配置,它应该保持不变。

by
感谢您的回答 @alexmiller

为了重现我描述的第一个和第二个问题,请在只包含`pom.xml`文件且没有`<project>/<build>/<sourceDirectory>`的目录中运行`clj -Spom`,例如:

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi &,see below
  <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 version "11.0.6-internal" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6-internal+0-adhoc..jdk11u-jdk-11.0.6-ga)
OpenJDK 64-Bit Server VM (build 11.0.6-internal+0-adhoc..jdk11u-jdk-11.0.6-ga, mixed mode)
```

我之所以没有提供`deps.edn`文件,是因为我可以在没有任何文件的情况下重现它。
by
谢谢,这很有帮助。已记录为https://clojure.atlassian.net/browse/TDEPS-152,我将尽快处理。
...