בדף הזה מוסבר איך לנהל פרויקט App Engine עבור Cloud Endpoints Frameworks API באמצעות Apache Maven. Apache Maven הוא כלי לניהול פרויקטים של תוכנה ולהבנתם, שיכול ליצור קובצי ארכיון אפליקציות אינטרנט (WAR) לצורך פריסה ב-App Engine. Google מספקת פלאגין וארכיטיפים של Maven שנתמכים על ידי Maven 3.3.9 ומעלה.
Maven מוריד את ספריות Java מ-App Engine SDK. אתם יכולים להשתמש ב-Maven כדי לבדוק את האפליקציה באופן מקומי ולפרוס אותה ב-App Engine.
לפני שמתחילים
- משתמשים במסוף Google Cloud כדי ליצור ולהגדיר את פרויקט Google Cloud :
- בוחרים פרויקט קיים או יוצרים פרויקט חדש. Google Cloud
- אם צריך ליצור אפליקציית App Engine לפרויקט, פועלים לפי ההנחיות כדי לבחור את האזור שבו רוצים למקם את אפליקציית App Engine.
- מורידים ומתקינים את ה-CLI של gcloud, ואז מפעילים את Google Cloud CLI.
אם כבר התקנתם את ה-CLI של gcloud ואתם רוצים להגדיר אותו כך שישתמש במזהה פרויקט Google Cloud שונה מזה שהגדרתם אותו אליו, תוכלו לעיין במאמר ניהול ההגדרות של ה-CLI של gcloud.
- מתקינים את רכיב
app-engine-javaשל ה-CLI של gcloud:gcloud components install app-engine-java
הערה: כדי לוודא שמותקנת הגרסה העדכנית של ה-CLI של gcloud ל-Java, מריצים את הפקודה
gcloud components update. - אם אין לכם Java, אתם צריכים להוריד, להתקין ולהגדיר אותה.
- מגדירים את דגלי מהדר Java בקובץ
pom.xmlשל הפרויקט כדי לציין קוד בייט של Java 8: - צריך להתקין את Apache Maven מגרסה 3.3.9 ומעלה.
כדי לקבוע את גרסת Maven, מריצים את הפקודה הבאה:
mvn -v
- אם לא מותקנת אצלכם גרסה מתאימה של Maven:
הוספת App Engine Maven Plugin לפרויקט קיים (אופציונלי)
כדי להשתמש ב-App Engine Maven plugin בפרויקט Maven קיים, מוסיפים את הקוד הבא לקטע plugins בקובץ pom.xml של הפרויקט:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.8.1</version>
</plugin>בחירת ארכיטיפ של App Engine
ארכיטיפים של Maven מאפשרים למשתמשים ליצור פרויקטים של Maven באמצעות תבניות שמכסות תרחישים נפוצים. App Engine משתמש בתכונה הזו של Maven כדי לספק כמה ארכיטיפים שימושיים של App Engine ב-Maven Central. בוחרים ארכיטיפ של App Engine שמתאים לאפליקציה:
| סוג האפליקציה | פריט מידע שנוצר בתהליך | תיאור |
|---|---|---|
| מסגרות Endpoints ל-App Engine | endpoints-skeleton-archetype |
יוצר פרויקט חדש וריק של Endpoints Frameworks for App Engine backend API, שמוכן להוספה של מחלקות ומשאבים משלכם, עם הקבצים והספריות הנדרשים. |
| מסגרות של נקודות קצה ל-App Engine | hello-endpoints-archetype |
יוצר פרויקט API של Endpoints Frameworks עבור App Engine backend, שמוכן לבנייה ולהרצה. |
יצירת פרויקט חדש באמצעות Maven
במהלך יצירת הפרויקט, מערכת Maven מבקשת לספק את הערכים groupId, artifactId, version ו-package של הפרויקט.
| מונח | משמעות |
|---|---|
groupId |
מרחב שמות ב-Maven למעקב אחרי הארטיפקטים. כשאנשים משתמשים בפרויקט שלכם בפרויקט Maven משלהם, הוא משמש כמאפיין של התלות שהם מציינים. |
artifactId |
השם של הפרויקט ב-Maven. הוא מצוין גם על ידי צרכנים של הפרויקט שלכם כשהם תלויים בכם בפרויקטים שלהם ב-Maven. |
version |
גרסת Maven הראשונית שרוצים שהפרויקט ייווצר איתה. מומלץ להוסיף את הסיומת -SNAPSHOT ל-version, כי כך יש תמיכה בתוסף Maven release לגרסאות שנמצאות בפיתוח. מידע נוסף על השימוש בתוסף ההפצה מופיע במדריך Maven. |
package |
חבילת Java שנוצרה במהלך היצירה. |
יצירת אפליקציה חדשה של Endpoints Frameworks
בקטע הזה מתואר תהליך היצירה של פרויקט חדש ב-Endpoints Frameworks גרסה 2.0.
ב-hello-endpoints-archetype יש דוגמה לשימוש בתוספים, כולל App Engine Maven Plugin ו-Endpoints Frameworks Maven Plugin.
hello-endpoints-archetype יוצר דוגמה ל-API של Greetings באמצעות Endpoints Frameworks גרסה 2.0. הוא גם משמש כדוגמה להעברת אפליקציות של Endpoints Frameworks מגרסה 1.0 לגרסה 2.0.
ה-README.md שנוצר עם האב-טיפוס מספק מידע על המקום שבו ההעברה התרחשה.
כדי ליצור פרויקט ארכיטיפ של Endpoints Frameworks עבור API של קצה עורפי ב-App Engine:
משנים את הספרייה לספרייה שבה רוצים לבנות את הפרויקט.
מריצים את פקודת Maven הבאה:
mvn archetype:generate -Dgoogle-cloud-project=[YOUR-PROJECT-ID] -Dappengine-plugin=2.8.1 -Dendpoints-frameworks=2.1.0 -Dendpoints-plugin=1.0.2 -Dappengine-sdk=1.9.98 -Dfilter=com.google.appengine.archetypes:כאשר:
-
-Dgoogle-cloud-projectמוגדר למזהה הפרויקט. -
-Dappengine-pluginמוגדר לגרסה העדכנית ביותר של התוסף App Engine Maven. -
-Dendpoints-frameworksמוגדר לגרסה העדכנית ביותר של Endpoints Frameworks for App Engine עבור תלות ב-Maven. -
-Dendpoints-pluginמוגדר לגרסה העדכנית ביותר של Endpoints Frameworks for App Engine Maven Plugin.
-
צריך להזין את המספר שמתאים ל-
hello-endpoints-archetype.בוחרים את הגרסה העדכנית ביותר מתוך רשימת הגרסאות הזמינות של הארכיטיפ שמוצגת.
כשמוצגת ההודעה
Define value for property 'groupId', מציינים את מרחב השמות של האפליקציה. לדוגמה, מציינים את הערךcom.example.helloendpoints.כשמוצגת ההודעה
Define value for property 'artifactId', מציינים את שם הפרויקט. לדוגמה, מציינים את הערךhelloendpoints.כשמוצגת הבקשה
Define value for property 'version', מאשרים את ערך ברירת המחדל.כשמוצגת הבקשה
Define value for property 'package', מאשרים את ערך ברירת המחדל.כשמופיעה בקשה לאשר את הבחירות, מקבלים את ערך ברירת המחדל על ידי הקלדת
Y.מחכים שהפרויקט יסיים את היצירה. ואז משנים את הספרייה לספריית הפרויקט החדשה, לדוגמה
helloendpoints/.יוצרים את הפרויקט.
mvn clean packageמחכים שהפרויקט ייבנה. בסיום הפרויקט בהצלחה, מוצגת הודעה דומה לזו:
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.062 s [INFO] Finished at: 2017-02-28T00:28:03-08:00 [INFO] Final Memory: 27M/485M [INFO] ------------------------------------------------------------------------כדי לבדוק באופן מקומי ולפרוס את הפרויקט בסביבה הרגילה של App Engine, כדאי לעיין במאמר ניהול, בדיקה ופריסה של פרויקט Maven.
בנוסף, אפשר ליצור ספריות לקוח Java ל-Greeting API באמצעות Endpoints Frameworks Maven Plugin:
mvn endpoints-framework:clientLibs
התרשים הבא מציג את פריסת הפרויקט הבסיסית של Greetings API:

- השדה
README.mdמכיל מידע על הדוגמה שנוצרה. -
Greetings.javaמכיל הגדרת API לדוגמה של Greetings API. -
Constants.javaמכיל קבועים שמשמשים בדוגמה Greetings API. -
HelloGreeting.javaמכיל מאגר להודעות שהתקבלו ונשלחו מ-Greetings API לדוגמה. -
index.htmlמכיל ממשק משתמש פשוט לקריאה ל-Greetings API בקצה העורפי. -
base.jsמכיל JavaScript שנדרש לממשק המשתמש כדי לבצע בקשות לשרת. build.gradleאחרי שהדוגמה נוצרת, היא תומכת גם ב-Gradle. מידע נוסף על הפונקציונליות הזו זמין בREADME.md.
קומפילציה ו-build של האפליקציה
כדי לפתח אפליקציה שנוצרה באמצעות ארכיטיפים של Maven App Engine:
עוברים לספרייה הראשית של הפרויקט, לדוגמה,
guestbook/.מריצים את Maven:
mvn clean packageמחכים שהפרויקט ייבנה. בסיום הפרויקט בהצלחה, מוצגת הודעה דומה לזו:
BUILD SUCCESS Total time: 10.724s Finished at: 2016-08-04T16:18:24-07:00 Final Memory: 24M/213M
בדיקת האפליקציה באמצעות שרת הפיתוח
במהלך שלב הפיתוח, אתם יכולים להריץ ולבדוק את האפליקציה בכל שלב בשרת הפיתוח על ידי הרצת התוסף App Engine Maven.
כדי לבדוק את מסגרות Endpoints עבור אפליקציית App Engine:
אם עדיין לא עשיתם זאת, אתם צריכים לבנות את האפליקציה:
mvn clean packageמריצים את הדוגמה באופן מקומי:
mvn appengine:runמחכים שהשרת יתחיל לפעול. כשהשרת מופעל באופן מלא והאפליקציה פועלת, מוצגת הודעה שדומה להודעה הבאה:
[INFO] GCLOUD: INFO ### devappserver2.py:764] Skipping SDK update check. [INFO] GCLOUD: INFO ### api_server.py:268] Starting API server at: http://localhost:34199 [INFO] GCLOUD: INFO ### dispatcher.py:199] Starting module "default" running at: http://localhost:8080 [INFO] GCLOUD: INFO ### admin_server.py:116] Starting admin server at: http://localhost:8000 [INFO] GCLOUD: ### com.google.appengine.tools.development.SystemPropertiesManager setSystemPropertiesכדי לגשת לאפליקציה, נכנסים לכתובת
http://localhost:8080/בדפדפן.מכבים את האפליקציה ואת שרת הפיתוח על ידי לחיצה על
Control+C.
ציון יציאה לבדיקה מקומית
כשמריצים את האפליקציה בשרת הפיתוח המקומי, יציאת ברירת המחדל היא 8080. אפשר לשנות את ברירת המחדל הזו על ידי שינוי של רשומת הפלאגין עבור appengine-maven-plugin. לדוגמה, אפשר לציין את היציאה והכתובת בקובץ pom.xml של ספריית האפליקציה:
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<devserver.host>0.0.0.0</devserver.host>
<devserver.port>8181</devserver.port>
</configuration>
</plugin>
</plugins>בדוגמה הזו, <devserver.port> מגדיר את היציאה ל-8181 במקום ברירת המחדל, וכתובת 0.0.0.0 מצוינת, מה שאומר ששרת הפיתוח מאזין לבקשות שמגיעות מהרשת המקומית.
הקידומת devserver היא אופציונלית. אפשר להשתמש במקומה ב-<port>8181</port>.
ניפוי באגים בשרת הפיתוח
כדי לנפות באגים באפליקציה שפועלת באופן מקומי, מגדירים את jvmFlags בהגדרות הפלאגין כדי להפעיל ניפוי באגים ב-JVM הבסיסי, לדוגמה:
<configuration>
<jvmFlags>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</jvmFlag>
</jvmFlags>
</configuration>
פריסת האפליקציה
כדי לפרוס את האפליקציה:
mvn appengine:deploy
לappengine:deployיעד ולכל היעדים האחרים בתוסף App Engine Maven יש פרמטרים משויכים שאפשר להשתמש בהם. רשימה מלאה של המטרות והפרמטרים מופיעה במאמר App Engine Maven plugin goals and parameters.
המאמרים הבאים
- אפשר לעיין בקוד של התוסף App Engine Maven ולדווח על בעיות ב-GitHub.
- כדי ללמוד איך מציינים פרמטרים ליעדים, אפשר לעיין במאמר App Engine Maven Goals and Parameters.
- אפשר לעיין בקוד של התוסף Endpoints Frameworks Maven ולדווח על בעיות ב-GitHub.
- כדי ללמוד איך מציינים פרמטרים ליעדים, אפשר לעיין בתוסף Cloud Endpoints Frameworks Maven.