שימוש ב-Gradle וב-App Engine Plugin

Gradle הוא כלי אוטומטי לבנייה בקוד פתוח, שמתמקד בגמישות ובביצועים. ‫App Engine מספק פלאגין Gradle שבו אפשר להשתמש כדי לבנות ולפרוס את האפליקציה ב-App Engine. בדוגמת הקוד אפשר לראות איך להגדיר את הקובץ build.gradle כדי להוסיף משימות App Engine Gradle, מאגרי Maven, פלאגין App Engine Gradle ותלויות.

לפני שמתחילים

  1. התקנת Java

  2. התקנת Gradle

  3. התקנה של git

  4. אם עדיין לא עשיתם את זה, פועלים לפי השלבים במדריך הזה כדי להוריד את ה-CLI של gcloud, ליצור את הפרויקט Google Cloud ולהפעיל את אפליקציית App Engine.

  5. מתקינים את רכיב app-engine-java של ה-CLI של gcloud:

    gcloud components install app-engine-java
    

יצירת פרויקט חדש של Gradle

אפשר ליצור פרויקט חדש של Gradle מאפס באמצעות מעטפת. לחלופין, כדי לנסות את הפלאגין, אפשר להוריד, להריץ באופן מקומי ולפרוס את פרויקט hello world.

כדי ליצור פרויקט חדש:

  1. יוצרים ספרייה חדשה ועוברים אליה.

  2. כדי לאתחל פרויקט חדש:

    1. מריצים את gradle init:

      gradle init --type java-application
      

      תתבקשו לענות על שאלות:

      • מזינים את גרסת היעד של Java (מינימום: 7, ברירת מחדל: 21): 21
      • בוחרים את מבנה האפליקציה: 1 לאפליקציה יחידה
      • בחירת DSL של סקריפט build: ‏ 2 (ל-Groovy)
      • בוחרים מסגרת בדיקה: 1 (ל-JUnit 4)
      • יצירת build באמצעות ממשקי API חדשים והתנהגות חדשה: לא
    2. יוצרים את התיקייה WEB-INF:

      mkdir -p app/src/main/webapp/WEB-INF
      
    3. יוצרים את התיקייה appengine:

      mkdir -p app/src/main/appengine
      
  3. מסירים את קובצי ה-stub שנוצרו על ידי gradle init:

    rm ./app/src/main/java/org/example/App.java ./app/src/test/java/org/example/AppTest.java
    
  4. מוסיפים את השורות הבאות לקובץ app/build.gradle כדי להוסיף משימות App Engine Gradle, מאגרי Maven, את התוסף App Engine Gradle, תלויות והגדרות של משימות:

    buildscript {      // Configuration for building
      repositories {
        jcenter()      // Bintray's repository - a fast Maven Central mirror & more
        mavenCentral()
      }
      dependencies {
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.5.0'
        classpath 'org.akhikhl.gretty:gretty:+'
      }
    }
    
    repositories {   // repositories for Jar's you access in your code
      jcenter()
      mavenCentral()
    }
    
    apply plugin: 'java'
    apply plugin: 'war'
    apply plugin: 'org.akhikhl.gretty'
    apply plugin: 'com.google.cloud.tools.appengine'
    
    dependencies {
      providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
      providedCompile 'com.google.appengine:appengine:+'
    // Add your dependencies here.
    
    }
    
    gretty {
        servletContainer = 'jetty9'  // What App Engine Flexible uses
    }
    
      appengine {
        deploy {   // deploy configuration
          stopPreviousVersion = true  // default - stop the current version
          promote = true              // default - & make this the current version
        }
      }
    
    group = 'com.example.appengine'   // Generated output GroupId
    version = '1.0-SNAPSHOT'          // Version in generated output
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
  5. צריך גם להוסיף את הקבצים הבאים לפרויקט באמצעות עורך טקסט או סביבת פיתוח משולבת (IDE):

במאמר הגדרת סביבת הפיתוח מופיע סקירה כללית של פרויקט Java App Engine.

בדיקת האפליקציה באמצעות שרת הפיתוח

  1. כדי לגשת למשאבי Google מהפרויקט כשמריצים אותו באופן מקומי, צריך להגדיר את פרטי הכניסה שמוגדרים כברירת מחדל באפליקציה באמצעות הפקודה:

    gcloud auth application-default login
    
  2. עוברים אל ספריית הבסיס של האפליקציה.

  3. במהלך שלב הפיתוח, אפשר להריץ ולבדוק את האפליקציה בכל שלב בשרת הפיתוח באמצעות הפעלת Gradle:

    gradle jettyRun
    

    אפשר גם להריץ את Gradle בלי להתקין אותו באמצעות Gradle Wrapper.

  4. מחכים שהשרת יופעל. השרת מופעל כשהאפליקציה פועלת, ותופיע הודעה דומה לזו:

    :prepareInplaceWebAppFolder
    :createInplaceWebAppFolder
    :compileJava
    :processResources UP-TO-DATE
    :classes
    :prepareInplaceWebAppClasses
    :prepareInplaceWebApp
    :jettyRun
    17:40:05 INFO  Jetty 9.2.15.v20160210 started and listening on port 8080
    17:40:05 INFO   runs at:
    17:40:05 INFO    http://localhost:8080/
    
  5. האפליקציה פועלת בכתובת http://localhost:8080.

מידע נוסף על הפלאגין Gretty זמין במאמרים Gretty Configuration ו-Gretty tasks.

פריסת האפליקציה

כדי לפרוס את האפליקציה:

gradle appengineDeploy

למשימה appengineDeploy ולכל שאר המשימות ב-Gradle יש מאפיינים משויכים שאפשר להשתמש בהם. רשימה מלאה של המשימות והמאפיינים מופיעה במאמר בנושא משימות ומאפיינים של App Engine Gradle.

שימוש ב-Gradle wrapper

‫Gradle מספק מנגנון להורדה ולהרצה של הגרסה הנדרשת של Gradle ללא התקנה:

‫Linux/macOS

  1. עוברים לספרייה של הקוד לדוגמה.

  2. מריצים את gradlew:

    ./gradlew jettyRun
    

Windows

  1. עוברים לספרייה של הקוד לדוגמה.

  2. מריצים את gradlew:

    ./gradlew.bat jettyRun
    

מידע נוסף על Gradle זמין במאמר בנושא משימות ומאפיינים של Gradle ב-App Engine.

המאמרים הבאים