2016-02-25 16 views

Trả lời

10

Minimal build.gradle:

apply plugin: 'scala' 

repositories{ 
    mavenCentral() 
} 

dependencies{ 
    compile "org.scala-lang:scala-library:2.11.7" 
    compile "org.scala-lang:scala-compiler:2.11.7" 
} 

task repl(type:JavaExec) { 
    main = "scala.tools.nsc.MainGenericRunner" 
    classpath = sourceSets.main.runtimeClasspath 
    standardInput System.in 
    args '-usejavacp' 
} 

tín dụng để this answer cho việc giải thích làm thế nào để chỉ đạo stdin với standardInput và có REPL sử dụng classpath đúng với args.

Lưu ý thư viện scala-compiler là phụ thuộc. Đó là nơi tìm thấy scala.tools.nsc.MainGenericRunner.

Từ giao diện điều khiển một số tùy chọn cần thiết để chạy REPL:

  • --no-daemon, nếu bạn đang sử dụng một daemon Gradle. Tại thời điểm này, REPL không trả lời các lần nhấn phím nếu chạy từ daemon.

  • --console plain. Một lựa chọn phổ biến nhưng kém hơn là --quiet. Nếu chạy mà không có một trong các tùy chọn này, dấu nhắc của REPL bị ô nhiễm bởi báo cáo tiến độ của Gradle. --console plain có lợi thế là nó cũng điều chỉnh hành vi của readline để rlwrap là không cần thiết.

Lệnh đầy đủ để chạy REPL là gradle repl --console plain --no-daemon, do đó, tạo bí danh trong vỏ của bạn có ý nghĩa.

+1

nó hoạt động, nhưng tôi không thể chuyển sang lệnh trước bằng khóa. bạn có biết cách sửa nó không? – damluar

+0

Tôi không sử dụng Gradle tại thời điểm này, nhưng trên đầu của tôi, bạn có thể thử sử dụng rlwrap với '--quiet' thay vì' --console plain'. –

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