יצירת צנצנת שמנה בגרדל

מאמר זה הוא חלק מסדרה: • מבוא ל- Gradle

• נמלה מול מייבן מול גרדל

• כתיבת תוספי Gradle בהתאמה אישית

• יצירת צנצנת שמנה בגרדל (המאמר הנוכחי)

1. סקירה כללית

במאמר מהיר זה, נדבר על יצירת "צנצנת שומן" ב- Gradle.

בעיקרון, צנצנת שומן (המכונה גם uber-jar) היא ארכיון המספק את עצמו המכיל גם מחלקות וגם תלות הדרושים להפעלת יישום.

2. הגדרה ראשונית

נתחיל בפשטות build.gradle קובץ עבור פרויקט Java עם שתי תלות:

החל תוסף: מאגרי 'java' {mavenCentral ()} תלות {קבוצת הידור: 'org.slf4j', שם: 'slf4j-api', גרסה: '1.7.25' קבוצת הידור: 'org.slf4j', שם: ' slf4j-simple ', גרסה:' 1.7.25 '}

3. שימוש במשימת הצנצנת מתוסף Java

נתחיל בשינוי ה- קַנקַן המשימה מתוסף Java Gradle. כברירת מחדל, משימה זו מייצרת צנצנות ללא תלות.

אנו יכולים להחליף התנהגות זו על ידי הוספת מספר שורות קוד. אנחנו צריכים שני דברים כדי שזה יעבוד:

  • א מעמד ראשי תכונה בקובץ המניפסט
  • כלול צנצנות תלות

בואו להוסיף כמה שינויים למשימת Gradle:

jar {manifest {תכונות "מחלקה ראשית": "com.baeldung.fatjar.Application"} מ- {configurations.compile.collect {it.isDirectory ()? זה: zipTree (it)}}}

4. יצירת משימה נפרדת

אם אנו רוצים להשאיר את משימת הצנצנת המקורית כפי שהיא, אנו יכולים ליצור מטלה נפרדת שתעשה את אותה העבודה.

הקוד הבא יוסיף משימה חדשה בשם customFatJar:

משימה customFatJar (סוג: Jar) {manifest {attributes 'Main-Class': 'com.baeldung.fatjar.Application'} baseName = 'all-in-one-jar' מ- {configurations.compile.collect {it.isDirectory ( )? זה: zipTree (it)}} עם צנצנת}

5. שימוש בתוספים ייעודיים

אנו יכולים גם להשתמש בתוספי Gradle קיימים על מנת לבנות צנצנת שומן.

בדוגמה זו נשתמש בתוסף Shadow:

buildscript {repositories {jcenter ()} תלות {classpath 'com.github.jengelman.gradle.plugins: shadow: 2.0.1'}} החל תוסף: 'java' החל תוסף: 'com.github.johnrengelman.shadow'

ברגע שאנחנו מיישמים את התוסף Shadow, ה- shadowJar המשימה תהיה מוכנה לשימוש.

6. מסקנה

במדריך זה הצגנו כמה דרכים שונות ליצירת צנצנות שומן ב- Gradle. הקפנו את משימת הצנצנת המוגדרת כברירת מחדל, יצרנו משימה מופרדת והשתמשנו בתוסף הצללים.

איזו גישה מומלצת? התשובה היא - זה תלוי.

בפרויקטים פשוטים, זה מספיק כדי לעקוף את משימת הצנצנת המוגדרת כברירת מחדל או ליצור מטלה חדשה. אך ככל שהפרויקט גדל אנו ממליצים בחום להשתמש בתוספים מכיוון שהם כבר פתרו בעיות קשות יותר כמו התנגשויות עם קבצי META-INF חיצוניים.

כמו תמיד, ניתן למצוא את היישום המלא של מדריך זה ב- GitHub.

« כתבות קודמות תוספי Gradle מותאמים אישית

$config[zx-auto] not found$config[zx-overlay] not found