Grails 3.1 cho phép chúng tôi xây dựng tệp WAR có thể chạy được cho ứng dụng của mình bằng package
lệnh. Chúng ta có thể chạy tệp WAR này bằng Java bằng -jar
tùy chọn. Trong Grails 3.0, package
lệnh cũng tạo một tệp JAR có thể được thực thi dưới dạng ứng dụng độc lập và tệp Zip và Tar có thể phân phối. Hãy xem cách chúng tôi vẫn có thể tạo các tệp JAR, Zip và Tar bằng Grails 3.1.
Đầu tiên chúng ta sử dụng package
lệnh để tạo tệp WAR. Các tập tin được tạo ra trong thư mục build/libs
. Tệp WAR có thể được chạy bằng lệnh java -jar sample-0.1.war
nếu tên tệp của tệp WAR của chúng tôi là sample-0.1.war
. Điều quan trọng là chạy lệnh này trong cùng thư mục với tệp WAR ở đâu, nếu không, chúng ta sẽ nhận được ServletException
khi mở ứng dụng trong trình duyệt web ( javax.servlet.ServletException: Could not resolve view with name '/index' in servlet with name 'grailsDispatcherServlet'
).
$ grails package
:compileJava UP-TO-DATE
:compileGroovy
:findMainClass
:assetCompile
...
Finished Precompiling Assets
:buildProperties
:processResources
:classes
:compileWebappGroovyPages UP-TO-DATE
:compileGroovyPages
:war
:bootRepackage
:assemble
BUILD SUCCESSFUL
| Built application to build/libs using environment: production
$ cd build/libs
$ java -jar sample-0.1.war
Grails application running at http://localhost:8080 in environment: production
Thay vì sử dụng package
lệnh Grails , chúng ta có thể sử dụng assemble
tác vụ nếu sử dụng Gradle:$ ./gradlew assemble
Để tạo tệp JAR có thể chạy được, chúng ta chỉ phải xóa war
plugin khỏi tệp bản dựng Gradle. Các package
lệnh bây giờ tạo ra các tập tin JAR trong thư mục build/libs
.
$ grails package
:compileJava UP-TO-DATE
:compileGroovy
:findMainClass
:assetCompile
...
Finished Precompiling Assets
:buildProperties
:processResources
:classes
:compileWebappGroovyPages UP-TO-DATE
:compileGroovyPages
:jar
:bootRepackage
:assemble
BUILD SUCCESSFUL
| Built application to build/libs using environment: production
$ java -jar build/libs/sample-0.1.jar
Grails application running at http://localhost:8080 in environment: production
Ngoài ra, chúng ta có thể sử dụng tác vụ Gradle assemble
thay vì package
lệnh Grails .
Nếu chúng ta muốn tạo một kho lưu trữ Zip và Tar có thể phân phối, chúng ta phải áp dụng application
plugin Gradle . Plugin này thêm các nhiệm vụ Gradle distTar
và distZip
. Các tác vụ này tạo một kho lưu trữ với các tập lệnh shell để khởi động ứng dụng Grails của chúng tôi cho cả hệ điều hành giống Windows và Unix và các thư viện cần thiết để chạy ứng dụng. Lệnh Grails package
sẽ sử dụng các tác vụ này nếu có sẵn để tạo tài liệu lưu trữ có thể phân phối. Chúng ta phải thêm application
plugin vào tệp xây dựng Gradle của mình và đặt lớp chính của ứng dụng:
// File: build.gradle
...
apply plugin: 'application'
...
// We set the name of the class
// with the main() method to start
// the application.
mainClassName = 'sample.Application'
...
Tiếp theo, chúng tôi gọi package
nhiệm vụ:
$ grails package
:compileJava UP-TO-DATE
:compileGroovy
:findMainClass
:assetCompile
...
Finished Precompiling Assets
:buildProperties
:processResources
:classes
:compileWebappGroovyPages UP-TO-DATE
:compileGroovyPages
:jar
:findMainClass
:startScripts
:distTar
:distZip
:bootRepackage
:assemble
BUILD SUCCESSFUL
| Built application to build/libs using environment: production
$ ls -al build/distributions
sample-0.1.tar sample-0.1.zip
$
Chúng tôi có thể cung cấp các tệp này cho người khác và họ chỉ cần giải nén tệp và thực thi các tập lệnh shell được tìm thấy trong bin
thư mục.
Để cho package
lệnh tạo các tệp lưu trữ JAR, WAR và phân phối có thể chạy được, chúng ta phải áp dụng lại war
plugin cho tệp xây dựng Gradle của chúng ta. Bây giờ package
lệnh tạo mọi thứ và chúng ta có thể chọn (các) tệp chúng ta muốn sử dụng.