gpt4 book ai didi

java - Leiningen:只编译修改过的 java 源文件

转载 作者:行者123 更新时间:2023-12-03 23:01:33 24 4
gpt4 key购买 nike

我正在使用 leiningen 的 :java-source-paths 并且它每次都在编译 java 源代码。有没有办法让 lein 判断它是否没有改变?

这里有一个示例项目来说明问题:https://github.com/yayitswei/leinwithjava

最佳答案

看起来您将 Clojure 和 Java 源代码混合在同一源代码树中,然后将 :java-source-paths 指向该源代码树根目录的子目录.多语言项目的一种更典型的方法是为每种语言的源代码管理单独的目录。

您每次调用 lein 时都会看到 Java 源代码重新编译的原因是检测陈旧 Java 源代码的检查仅在 :java-source-paths 指向时才有效在 Java 包树的根部。请注意 stale-java-sources function在 javac 任务中获取每个源文件相对于 :java-source-paths 目录的路径,并使用它来构造相对于 :compile- 的相应类文件的路径路径 目录。在您的情况下,当实际编译的类文件是 target/classes/main/java/TestClass.class 时,Leiningen 期望找到 target/classes/TestClass.class

我能够通过将其切换到以下目录结构来修复您的示例项目:

$ find src
src
src/java
src/java/main
src/java/main/java
src/java/main/java/TestClass.java
src/clj
src/clj/leinwithjava
src/clj/leinwithjava/core.clj

project.clj 中:

:source-paths ["src/clj"]
:java-source-paths ["src/java"]

关于java - Leiningen:只编译修改过的 java 源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18762021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com