현재 전화를 걸어 간단한 cli를 실행했습니다. lein run my-cli-command arg --option
외부 명령없이 내 명령을 실행할 수 있습니까?
lein 실행을 포함하지 않고 명령을 호출하려면 어떻게해야합니까? 이것은 내가 무엇을했는지입니다. my-cli-command arg --option
이진 파일이나 실행 파일로 변환해야합니까? 그렇다면 어떻게해야합니까?
현재 전화를 걸어 간단한 cli를 실행했습니다. lein run my-cli-command arg --option
외부 명령없이 내 명령을 실행할 수 있습니까?
lein 실행을 포함하지 않고 명령을 호출하려면 어떻게해야합니까? 이것은 내가 무엇을했는지입니다. my-cli-command arg --option
이진 파일이나 실행 파일로 변환해야합니까? 그렇다면 어떻게해야합니까?
내가 아는 한, 단지 my-cli-command arg --option
을 실행할 방법이 없습니다.
당신은 비록 자바 아카이브 작성하여 방정식에서 lein을 수행 할 수 있습니다
lein uberjar
그런 다음 항아리를 실행을 같이 다른 모든 :
java -jar target/my-cli-command-standalone.jar arg --option
uberjar
을 기반으로 단지 이름을합니다 project.clj
에서 프로젝트를 호출 한 후 외부 종속성에 의존하는 jar 파일과 (standalone
) 외부 종속성을 사용하는 jar 파일을 만듭니다.
그런 다음 @gary가 지적한대로 java - jar ...
명령을 .bat 파일에 붙여 원하는 이름을 지정한 다음 직접 박쥐를 실행할 수 있습니다. 내 bat
-Fu는 매우 약하지만, 인수를 배트에 전달하여 항아리로 전달하여 인수를 하드 코딩 할 필요가 없습니다.
나는 그것을 사용하지 않았지만, inlein이 존재하고 그것이 필요한 것처럼 보입니다.
Inlein은 Clojure 스크립트를 실행하는 가장 쉽고 빠른 방법입니다. 의존성을 인라인하고, 속어 줄을 추가하고, 스크립트 파일을 실행 가능하게 만들면됩니다.
그리고 최소한의 예 : https://coderwall.com/p/ssuaxa/how-to-make-a-jar-file-linux-executable
에 설명 된대로
#!/usr/bin/env inlein
'{:dependencies [[org.clojure/clojure "1.8.0"]]}
(println "hello world!")
이것은 굉장합니다! –
당신은 기본적으로 단일 쉘에서 쉘 스크립트와 uberjar를 연결할 수 있습니다 쉘 스크립트에서 "진 페이로드"를 사용할 수 있습니다 스크립트 파일을 만들고 스크립트에서 클래스 경로의 jar 파일로 해당 스크립트를 지정하여 java를 실행합니다. 예는 링크 된 게시물에서 온 것입니다.
러너 스크립트 저장 stub.sh
에서 t :
#!/bin/sh
MYSELF=`which "$0" 2>/dev/null`
[ $? -gt 0 -a -f "$0" ] && MYSELF="./$0"
java=java
if test -n "$JAVA_HOME"; then
java="$JAVA_HOME/bin/java"
fi
exec "$java" $java_args -jar $MYSELF "[email protected]"
exit 1
는 그런 다음 uberjar 함께 연결할 :
cat stub.sh my-cli-command-uberjar.jar > my-cli-command && chmod +x my-cli-command
이제 직접 실행할 수 있습니다 또한 lein 플러그인 자동화가
./my-cli-command args...
이 프로세스 : lein-binplus
[lein-bin] (https://github.com/Raynes/lein-bin)을 확인하십시오. –
Clojure 1.9부터는 새로운 CLI 도구가 있습니다! 설치는 this guide을 참조하십시오.이 같은 실행 스크립트를 만들 수 있습니다
#!/usr/local/bin/clojure
(println "Hello World! from" *ns*)
(require '[clojure.walk :as walk])
(walk/postwalk-demo {:woo ::yeah})
가 그런 다음 스크립트를 실행하고 그것을 실행합니다
$ chmod +x my_script
$ ./my_script
Hello World! from #object[clojure.lang.Namespace 0x1ebea008 user]
Walked: :woo
Walked: :user/yeah
Walked: [:woo :user/yeah]
Walked: {:woo :user/yeah}
시작 시간도 개선 된 것으로 보인다. 그것은 최근 MBP에 (단지 문자열을 출력) 사소한 스크립트를 실행하기 위해 초 이상 조금 걸립니다 :이 솔루션은 당신이 다음 내-CLI-명령 "라는 이름의 박쥐 파일이나 쉘 스크립트를 만들 수
time ./hello
Hello World!
./hello 1.51s user 0.12s system 184% cpu 0.887 total
"당신이 원했던 것처럼 당신이 부를 수 있습니다. 스크립트는'java -jar target/my-cli-command-standalone.jar '처럼 보일 것입니다.' –
Gary
@Gary 예. 나는 선전문을 추가하려고 노력할 것이다. – Carcigenicate