2012-09-12 14 views
8

Tôi đã tìm thấy một ví dụ để chạy các tập lệnh Groovy trên các hệ thống không có Groovy được cài đặt bằng cách sử dụng tệp jar groovy-all. Tôi đã thử những điều sau:Khi chạy các kịch bản lệnh Groovy bằng cách sử dụng hốc chứa tất cả, bạn chỉ định một classpath như thế nào?

java -cp src:.:lib/* -jar lib/groovy-all-2.0.1.jar src/com/example/MyScript.groovy 

Sự cố là tập lệnh phụ thuộc vào các thư trong thư mục lib và hai tệp tập lệnh Groovy khác nằm trong src/com/example. Khi tôi chạy nó, nó phàn nàn về các câu lệnh import cho tất cả chúng. Tôi có thể chạy nó trên một hệ thống đã được cài đặt Groovy tốt bằng cách sử dụng như sau:

CLASSPATH="src:.:lib/*" groovy src/com/example/MyScript.groovy 

Làm thế nào để chạy các kịch bản Groovy cách này, bằng cách sử dụng groovy-tất cả jar, cũng như cung cấp cho nó một classpath?

Trả lời

18

Bạn không thể kết hợp cả hai số -jar-cp trong lệnh java, vì vậy bạn cần đặt tên cho lớp chính một cách rõ ràng. Nhìn vào biểu hiện của groovy-all JAR, tên lớp chính là groovy.ui.GroovyMain, vì vậy bạn cần

java -cp 'src:.:lib/*' groovy.ui.GroovyMain src/com/example/MyScript.groovy 

(nếu groovy-tất cả đều chưa được bao phủ bởi lib/* bạn sẽ cần phải thêm rằng đến -cp cũng).

1

Một cách là biên dịch các tệp Groovy thành các tệp "* .class". Sau đó bao gồm các jar từ thư mục $ GROOVY_HOME/embeddable và đặt nó trên classpath.

Dưới đây là một ví dụ nhỏ gọn (dòng đầu tiên là một bản sao Unix đơn giản, sử dụng bất cứ điều gì làm việc cho bạn):

$ cp /some-dir/groovy-1.8.5/embeddable/* . 
$ groovyc Test.groovy 
$ java -cp . groovy-all-1.8.5.jar Test 

Đối với phân phối điển hình, bạn sẽ sử dụng Ant/Maven/Gradle để xây dựng jar của riêng bạn tập tin với Groovy biên dịch (tức là các tệp lớp) trong đó.

Các vấn đề liên quan