我是一个多模块maven项目,其中一个模块同时具有java和clojure代码,clojure代码需要来自java源代码的pojo,而java源代码中的另一个类需要clojure编译代码(I' ve补充说:gen-class和project编译很好,即使它最初给出了一个错误,因为当clojure-maven-plugin和编译做一个clojure时编译和编译时看不到java类我。但这并不适用于管理多模块的外部pom。感谢您寻求解决方案的任何帮助
答案 0 :(得分:2)
正如其中一条评论所说,clojure-maven-plugin无法处理同一模块中Java和Clojure代码之间的循环依赖关系。 Java代码在Clojure代码之前编译。
但是你可以重构代码以消除循环依赖。将Java + Clojure项目(maven模块)拆分为三个:
Base Java模块至少包含Clojure模块需要的POJO以及可能的其他常见内容。 Clojure模块将包含所有Clojure代码,第二个Java模块将包含需要由Clojure编译器生成的类的Java代码部分。只有Clojure模块需要clojure-maven-plugin。
然后,您可以在这些模块之间设置依赖关系,例如:
只要在Clojure模块中正确设置了AOT编译,现在应该编译所有内容。我相信clojure-maven-plugin AOT-默认编译所有命名空间。如果没有AOT编译,(gen-class)
什么都不做。