Чота не могу найти - можно как в lein проект добавить локальный ubejar? Мне чисто в репле поиграть с другим проектом. Нашел как jar юзать внешний, но с uberjar чота не получается
mvn install:install-file -Dfile=target/trace-0.1.7-SNAPSHOT.jar -DgroupId=jeaye -DartifactId=re-frame-trace -Dversion=0.1.7-1 -Dpackaging=jar -DgeneratePom=true
проинсталит jar в локальный maven ~/.m2
затем можно сослаться на этот jar
добавить в project.clj как [jeaye/re-frame-trace "0.1.7-1"]
@artem.yarulin
А вообще я бы предложил попробовать deps.edn https://clojure.org/reference/deps_and_cli#_dependencies там проще добавлять local и git завиcимости
@trybeee Чота у туплю наверно. Сделал хелло ворлд проект на жаве
package test;
public class Hello {}
сбилдил gradle build (если это важно)
потом mvn install:install-file -Dfile=test/build/libs/test.jar -DgroupId=test -DartifactId=test -Dversion=0.1.1 -Dpackaging=jar -DgeneratePom=true
Затем добавил в lein, все ок, lein deps :tree
его выводил, в репле classPath вывожу он есть.
А если (require 'test)
то ошибка FileNotFoundException Could not locate test__init.class or test.clj on classpath. clojure.lang.RT.load (RT.java:456)
Не могу сказать. уже давно не работаю в lein, перешел на deps.edn
сча попробую его
{:deps
{test {:local/root "test.jar"}}}
а если у меня group-id=aaa, artifactId=bbb, то импортировать я его должен как (require 'aaa.bbb/AppClassName)
?
для начала ява классы ипортируются через import
require только для clj* неймспейсов
аааааа
а потому уже можно говорить о том, что group-id=aaa, artifactId=bbb к джарам никакого отношения не имеют, только к способу их распространения
Т.е. если у меня
package test;
public class Hello {}
то это будет (import test.Hello)
?да
и еще, убержары ничем не отличаются от просто жаров
с точки зрения жвм
спасибо за объяснения, все запуталось в голове уже 🙂
нашел косяк еще - у меня spring boot а там у них свой loader и поэтому простой иморт класса из jar не срабатывает в репле
Если у кого тоже есть странное желание дернуть Kotlin из репла кложуры - я тут накидал пример https://github.com/artemyarulin/clojure-kotlin и описал пару подводных камней в связи с этим
Господа, а кто-нибудь видел эффективную персистентность на диск для кложурных структур данных? Чтобы можно было положить [{:state {...} :change {...}} {:state {...} :change {...}} ....]
, где :state
каждый раз небольшое изменение от предыдущего состояния на диск, и получилось не 1000 копий, а structural sharing, и при поднятии с диска память не раздувало на 1000 копий?
Если это ещё и не на диск, а в IndexedDB
, так было бы совсем то, что надо.