clojure-russia 2018-08-16

Чота не могу найти - можно как в 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* неймспейсов

аааааа

Работает, урааааа, спасибо @prepor и @trybeee 🙂

а потому уже можно говорить о том, что group-id=aaa, artifactId=bbb к джарам никакого отношения не имеют, только к способу их распространения

Т.е. если у меня

package test;
public class Hello {}
то это будет (import test.Hello) ?

и еще, убержары ничем не отличаются от просто жаров

с точки зрения жвм

спасибо за объяснения, все запуталось в голове уже 🙂

нашел косяк еще - у меня spring boot а там у них свой loader и поэтому простой иморт класса из jar не срабатывает в репле

Если у кого тоже есть странное желание дернуть Kotlin из репла кложуры - я тут накидал пример https://github.com/artemyarulin/clojure-kotlin и описал пару подводных камней в связи с этим

🏋️‍♂️ 1

Господа, а кто-нибудь видел эффективную персистентность на диск для кложурных структур данных? Чтобы можно было положить [{:state {...} :change {...}} {:state {...} :change {...}} ....], где :state каждый раз небольшое изменение от предыдущего состояния на диск, и получилось не 1000 копий, а structural sharing, и при поднятии с диска память не раздувало на 1000 копий?

Если это ещё и не на диск, а в IndexedDB, так было бы совсем то, что надо.