gpt4 book ai didi

java - 省略莱宁根的部分来源

转载 作者:搜寻专家 更新时间:2023-10-31 20:10:30 25 4
gpt4 key购买 nike

我有一个需要导出的 API,但我想避免他人窥探大量代码。如果我包含 :omit-sources true,那么所有代码​​库都会消失,并且我的 API 不再可用于编译。

这是如何实现的?我将尝试使用 git 子模块,但我想知道是否有一种替代方法与我当前的项目布局兼容,例如排除包以外的所有内容。

编辑:我有一个 data_readers.clj,如果我使用 :omit-sources,它不会进入 JAR

我目前做的是包括:filespecs [{:type :bytes :path "data_readers.clj" :bytes ~(slurp "src/main/shared/clj/data_readers.clj")}]

手动包含文件,但这会给 Cursive IntelliJ 插件带来麻烦。

最佳答案

你需要:aot(提前编译)和:omit-source

:aot 未被使用时(这是默认设置),clojure 将尝试从 jar 中的源代码即时编译类,因此它需要源代码。

你可以使用 :aot :all,或者 :aot [my.awesome.api] 如果你打算只公开你的 api ns。

因此您的 project.clj 将如下所示:


(defproject 我的项目...
...
:aot:所有
:omit-source true)

This thread来自 clojure 邮件列表有关于此的信息。还有 compilation page in clojure.org很好地解释了提前编译:

Clojure compiles all code you load on-the-fly into JVM bytecode, but sometimes it is advantageous to compile ahead-of-time (AOT). Some reasons to use AOT compilation are:

  • To deliver your application without source
  • To speed up application startup
  • To generate named classes for use by Java
  • To create an application that does not need runtime bytecode generation and custom classloaders

关于java - 省略莱宁根的部分来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517237/

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