LINUX.ORG.RU

Как подключить jar'ы к проекту leiningen?

 , jmonkeyengine3,


2

2

Есть 31 jar-файл. Есть какой-нибудь простой способ подключить их к проекту?

Подробней jar'ы - это jMonkeyEngine и его зависимости. В репозиториях есть [org.cogchar/ext.bundle.opengl.jmonkey «1.0.6.2»], [org.clojars.oskarkv/jmonkeyengine «3.0.1-SNAPSHOT»] и [org.clojars.oskarkv/jmonkeyengine «3.0.5-SNAPSHOT»]. Но первый - очень старый. Там версия движка от 3 октября прошлого года, а с тех пор много нового и полезного добавили. А второй и третий выдают «Could not find artifact org.clojars.oskarkv:jmonkeyengine:jar:3.0.5-SNAPSHOT in clojars» при попытке скачать зависимости. На clojars.org по поводу них написано: «Oops. We hit an error opening the metadata POM file for this project so some details are not available.»

Ответ на: Maven от Sigrlami

jMonkeyEngine не использует maven, только ant. И я, кстати, тоже никогда не пользовался ни первым ни вторым. Поэтому и написал «Есть какой-нибудь ПРОСТОЙ способ подключить их к проекту?». А разбираться в устройстве maven, а сперва ant(потому как без этого нельзя понять maven), a затем в устройстве 31 jar'a и писать для всего этого pom-файлы... у меня на это несколько дней уйдет... Кроме того есть большая вероятность, что у меня вообще это не получится, раз сами разработчики jMonkeyEngine этого не сделали...

arte-at-marte
() автор топика
Ответ на: комментарий от arte-at-marte

Ты не поверишь, но программисты не только разрабатывают программы, но инфраструктуру, я знаю Ant, Maven, Gradle. Потратить 3 дня на изучение примитивного DSL, это инвестиция в себя как хорошего разработчика и не будет возникать таких вопросов

Я рекомендовал бы тебе Gradle, но освоить Maven будет быстрее, т.к литературы завались. И это ОЧЕНЬ просто.

Возможно кто-то знает хитрый плагин для какой-то IDE который сделает все за тебя. Я пока расскажу как сделать с помощью Leiningen и Maven: 1. Выкачиваешь нужные jar-ники 2. Создаешь Maven репу

$ mkdir mvrep
. 3. Добавляешь руками или скриптом jar ники командой
mvn install:install-file -Dfile=/jmonkeyengine-3.0.1.jar -DartifactId=jmengine -Dversion=3.0.1 -DgroupId=jmonkey -Dpackaging=jar -DlocalRepositoryPath=mvrep
4. Добавляешь в projects.clj
:repositories {"local" ~(str (.toURI (java.io.File. "mvrep")))}
5. Делаешь
lein deps

Sigrlami
()

Можешь использовать этот плагин: https://github.com/kumarshantanu/lein-localrepo

Делаешь:

lein localrepo install path/to/file.jar group-id/artifact-id version

Это проинсталлирует джарник в твой локальный репозиторий. После этого ты сможешь прописывать его с этими параметрами у себя в project.clj.

unlog1c ★★★
()
Ответ на: комментарий от Sigrlami

Потратить 3 дня на изучение примитивного DSL, это инвестиция в себя как хорошего разработчика и не будет возникать таких вопросов

Да я бы с удовольствием, но у меня просто нет возможности этим заниматься... Прошу прощенья, если вопрос был глупым. Просто потребность подключить библиотеку в виде jar-файла показалась мне очень естественной, но способа сделать этого я не нашел...

Я пока расскажу как сделать с помощью Leiningen и Maven:

1. Выкачиваешь нужные jar-ники

2. Создаешь Maven репу:

$ mkdir mvrep

3. Добавляешь руками или скриптом jar ники командой

mvn install:install-file -Dfile=/jmonkeyengine-3.0.1.jar -DartifactId=jmengine -Dversion=3.0.1 -DgroupId=jmonkey -Dpackaging=jar -DlocalRepositoryPath=mvrep

4. Добавляешь в projects.clj

:repositories {«local» ~(str (.toURI (java.io.File. «mvrep»)))}

5. Делаешь

lein deps

Спасибо. Вроде работает.

arte-at-marte
() автор топика
Ответ на: комментарий от smoke_man

Можно через :resource-paths в файле проекта.

Я раньше так и делал. Если lein run, то приложение запускается норм. А вот lein uberjar... потом при запуске jar-файла вот что выдает:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:266)
	at clojure.lang.RT.loadClassForName(RT.java:2056)
	at clojure.lang.RT.load(RT.java:419)
	at clojure.lang.RT.load(RT.java:400)
	at clojure.core$load$fn__4890.invoke(core.clj:5415)
	at clojure.core$load.doInvoke(core.clj:5414)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.lang.Var.invoke(Var.java:415)
	at proto.jMain.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.jme3.system.AppSettings
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:188)
	at proto.jMain$loading__4784__auto__.invoke(jMain.clj:1)
	at proto.jMain__init.load(Unknown Source)
	at proto.jMain__init.<clinit>(Unknown Source)
	... 10 more
Could not find the main class: proto.jMain. Program will exit.

По моему после выхода leiningen 2.0 так всегда было...

arte-at-marte
() автор топика
Ответ на: комментарий от arte-at-marte

Я понимаю ситуацию, когда надо уже; вопрос не глупый, он тривиальный, но для того мы здесь и собираемся, чтоб помогать друг другу.

Выдели все-таки себе немножко времени на изучение хотя бы Maven, в Java среде ты с ним будешь постоянно сталкиваться...

Sigrlami
()
Ответ на: комментарий от arte-at-marte

Вероятно это самый простой. Начиная с Leiningen 2.0 он стал очень сильно бороться за repeatability, то есть - максимилизировать вероятность, что проект собранный на одной машине можно собрать на любой другой.

unlog1c ★★★
()
Ответ на: комментарий от dzidzitop

Строго говоря Clojure может. А вот Leiningen, похоже, не может т.к. основан на maven. В данном случае проблема в том, что с версии 2.0 они сознательно отказались от возможности загрузки не помещенных в репозитории jar-библиотек.

arte-at-marte
() автор топика
Ответ на: комментарий от dzidzitop

project.clj - так называется дефолтный конфиг проекта для leiningen. A leiningen - это пакетный менеджер для проектов на clojure. Он автоматизирует подгрузку зависимостей, сборку проекта и т.д. Т.е. аналогию провести действительно можно: project.clj для leiningen - это примерно то же, что pom.xml для maven. Leiningen-репозитории основаны на maven-репозиториях, по моему даже обратно совместимы.

arte-at-marte
() автор топика
2 июля 2014 г.

юзайте https://bitbucket.org/noncom/nativot для сборки конечных проектов с незарепанными джарами и dll-ками и будет вам счастье. а во время разработки - прописываете в :resource-paths - у меня всё работает

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.