7

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 packagelệnh. Chúng ta có thể chạy tệp WAR này bằng Java bằng -jartùy chọn. Trong Grails 3.0, packagelệ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 packagelệ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.warnế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 ServletExceptionkhi 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 packagelệnh Grails , chúng ta có thể sử dụng assembletá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 warplugin khỏi tệp bản dựng Gradle. Các packagelệ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 assemblethay vì packagelệ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 applicationplugin Gradle . Plugin này thêm các nhiệm vụ Gradle distTardistZip. 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 packagesẽ 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 applicationplugin 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 packagenhiệ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 binthư mục.

Để cho packagelệ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 warplugin cho tệp xây dựng Gradle của chúng ta. Bây giờ packagelệ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.

|