当IDE为您启动REPL时,当前的活动配置文件集不明确。在这种情况下,您能以某种方式查询Leiningen以找出它们可能是什么吗?
答案 0 :(得分:1)
通常,我在project.clj
上定义各种配置文件,分别指向每个配置文件,例如
:profiles {:release {:resource-paths ["config/release"]
:source-paths ["src"]
}
:test {:resource-paths ["config/test"]
:source-paths ["src" "test"]
}
:dev {:resource-paths ["config/dev"]
:source-paths ["src" "dev"]}}
因此,对于“ config”中的每个文件夹都有一个config.edn,其中包含我拥有的每个配置文件所需的信息,您可以在每个config.edn中添加一个:profile
关键字,并为其指定不同的值。每个人都可以显示当时哪个个人资料处于活动状态。我使用yogthos config来加载配置文件。
除此之外,我真的不希望IDE控制nrepl,通常它会在IDE关闭时杀死repl,并且对传递给lein的选项有严格的限制。我更喜欢使用lein with-profile dev repl
在不同于我的编辑器的终端中启动repl,然后在我的编辑器上连接该nrepl会话,这样您就可以确定所使用的配置文件。
答案 1 :(得分:1)
据我所知,无法查看正在运行的REPL中加载了哪些概要文件。就像任何程序都不知道它从哪个终端窗口启动。也就是说,profiles and how they work is documented。
仅仅知道哪些是“活动的”并不总是足够的。有时知道以什么顺序也很重要。
要解决此问题,请将以下内容添加到您的project.clj
:
:profiles {
:dev {:injections [(prn "including dev profile")]}
:test {:injections [(prn "including test profile")]}
:repl {:injections [(prn "including repl profile")]}
:my-profile {:injections [(prn "including my-profile profile")]}
现在运行以下命令并查找输出"including ...
:
lein repl
lein test
lein with-profile my-profile test
lein with-profile +my-profile test
请注意,:injections
不在jar或uberjars(lein jar
和lein uberjar
)中执行。这就是为什么我从上面的游乐场中排除了这个原因。