Fork me on GitHub
#clojure-russia
<
2018-08-16
>
Artem Yarulin07:08:45

Чота не могу найти - можно как в lein проект добавить локальный ubejar? Мне чисто в репле поиграть с другим проектом. Нашел как jar юзать внешний, но с uberjar чота не получается

dima10:08:41

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

dima10:08:59

добавить в project.clj как [jeaye/re-frame-trace "0.1.7-1"] @UC6B2D2FK

dima10:08:13

А вообще я бы предложил попробовать deps.edn https://clojure.org/reference/deps_and_cli#_dependencies там проще добавлять local и git завиcимости

Artem Yarulin10:08:48

@U051091NM Чота у туплю наверно. Сделал хелло ворлд проект на жаве

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)

dima10:08:20

Не могу сказать. уже давно не работаю в lein, перешел на deps.edn

Artem Yarulin10:08:04

сча попробую его

dima10:08:35

{:deps
 {test {:local/root "test.jar"}}}

Artem Yarulin10:08:23

а если у меня group-id=aaa, artifactId=bbb, то импортировать я его должен как (require 'aaa.bbb/AppClassName) ?

prepor10:08:55

для начала ява классы ипортируются через import

prepor10:08:08

require только для clj* неймспейсов

Artem Yarulin10:08:03

Работает, урааааа, спасибо @U052XKCCK и @U051091NM 🙂

prepor10:08:59

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

Artem Yarulin10:08:01

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

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

prepor10:08:55

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

prepor10:08:59

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

Artem Yarulin10:08:42

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

Artem Yarulin11:08:22

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

Artem Yarulin20:08:40

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

4
dottedmag21:08:27

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

dottedmag21:08:28

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