מבוא ל Maven אליהו חלסצ'י תכנות מתקדם 2 89-211 תרגול מספר 3 תש"ע 2009-2010 מבוא ל Maven אליהו חלסצ'י
הקדמה Maven היא תוכנת קוד פתוח מבית apache לניהול מעגל החיים של פיתוח פרויקט. יוצר standard לגבי היכן כל רכיב נמצא. בדומה ל ant בונים איתו פרויקטים אך בניגוד ל ant ישנה שכבת אבסטרקציה שמקצרת משמעותית את שורות הקוד הדרושות לבנייה.
הקדמה POM – project object model הוא קובץ xml המהווה את היחידה הבסיסית ב maven. כל הגדרות הבנייה שמורות בתוכו כגון: Source directory Test source directory Build directory תלויות, Plugins וכו'. בשיעור היום כמבוא ל maven נראה רק דוגמא פשוטה ליצירה ובנייה של פרויקט java פשוט.
התקנה הורדה מתוך : http://maven.apache.org/download.html הוראות התקנה נמצאות בסוף הדף (כמו ב ant יש לפתוח את קובץ ה zip בתיקייה כלשהי ולהוסיפה למשתני הסביבה) בצד לינקים לאינטגרציה עם eclipse או netbeans בדיקת התקנה: D:\>mvn --version Apache Maven 2.1.0 (r755702; 2009-03-18 21:10:27+0200) Java version: 1.6.0_05 Java home: C:\Program Files\Java\jdk1.6.0_05\jre Default locale: iw_IL, platform encoding: Cp1255 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
יצירת פרויקט ניצור תיקיית workspace ובתוכה ניצור פרויקט ע"י: D:\>md mavenProject D:\>cd mavenProject D:\mavenProject>mvn archetype:generate ניצור תיקיית workspace ובתוכה ניצור פרויקט ע"י: כעת נתבקש להכניס archetype, ניתן לבחור מבין 41 המוכנים מראש, נבחר בברירת המחדל 15 – quick start. נתבקש למלא את הפרטים: groupId artifactId (קובץ היעד) version package ולאשר את הפרטים. בפעם הראשונה תהליך זה יכול לקחת קצת זמן עקב הורדה של רכיבים מהרשת. Define value for groupId: : com.advancedProgramming.hello Define value for artifactId: : helloWorldApp Define value for version: 1.0-SNAPSHOT: : Define value for package: com.advancedProgramming.hello: : Confirm properties configuration: ... Y: :
יצירת פרויקט מבנה הפרויקט שהתקבל: נוצרה תיקייה helloWorldApp. בתוכה src עבור הקוד. שם נוצרו main ו test עבור הקוד הראשי ובדיקתו. בתוכן נוצרו התיקיות ע"פ ה package שבחרנו. קבצים: בתוך hello שתחת main נוצר הקובץ App.java שכותב למסך hello world (כמובן...) בתוך hello שתחת test נוצר הקובץ AppTest.java המהווה מחלקת JUnit לבדיקת App.java תחת תיקיית הפרויקט – helloWorldApp נוצר הקובץ pom.xml האחראי על ההגדרות השונות של בניית הפרויקט
יצירת פרויקט pom.xml: (project object model) הגדרת ה xml. הגדרת גרסת המודל – 4.0.0 הגדרות הפרויקט: groupId artifactId – שם קובץ היעד packaging – סוג קובץ היעד גרסת הפרויקט שם הפרויקט הגדרת התלויות: במקרה שלנו ישנה תלות אחת – JUnit עבור הבדיקה.
הרצות שונות קימפול הפרויקט ע"י: D:\mavenProject>cd helloWorldApp D:\mavenProject\helloWorldApp>mvn compile קימפול הפרויקט ע"י: בפעם הראשונה הוא יוריד רכיבים ותלויות הדרושים לקימפול מלא של הפרויקט. נוצרה התיקייה target ובתוכה classes שם נוצרו תיקיות ה package ובפנים הקובץ App.class כדי לקמפל את תוכנית הבדיקה וגם לבצע את הבדיקה עצמה נכתוב: בפעם הראשונה יתבצע download ל JUnit. תוצאה: D:\mavenProject\helloWorldApp>mvn test Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
הרצות שונות יצירת jar ע"י: תחת התיקייה target נוצר לנו הקובץ helloWorldApp-1.0-SNAPSHOT.jar D:\mavenProject\helloWorldApp>mvn package
הטמעה לאחר שנלמד Servlets: קמפלו את תוכניות ה servlet השונות מהשיעורים הקודמים באמצעות maven. תיצרו קובץ war לפרויקט.