مجموعة المصادر مجموعة مسمّاة من المصادر والموارد. يشتق Elide من كل مجموعة مهام التصريف والاختبار والتحزيم.
البنية الاصطلاحية
توجد main في src/main، و test في src/test، وأي مجموعة أخرى في src/<name>:
| المسار | المعنى |
|---|---|
src/<set>/java، /kotlin، /js، /ts، /python | المصادر، مجلد لكل لغة |
src/<set>/resources | الموارد |
- يُصرَّف كل مجلد لغة موجود. إن لم يوجد أي منها، فإن
src/<set>نفسه هو جذر المصادر. - يُستخدم
srcبوصفهsrc/main، وtestأوtestsبوصفهsrc/test. - توجد
mainوtestمتى وُجدت مجلداتهما. يجب التصريح بالمجموعات الأخرى.
لا تحتاج هذه البنية إلى كتلة sources:
src/main/kotlin/sample/Main.kt
src/main/resources/app.properties
src/test/kotlin/sample/MainTest.ktيطبع elide project info المجموعات المحلولة؛ ويميّز (by convention) المسارات الآتية من البنية الاصطلاحية.
التصريح بمجموعات المصادر
sources {
// A glob moves only the sources.
["main"] = "lib/**/*.kt"
// A block sets more properties.
["integrationTest"] {
type = "test"
paths { "it/**/*.kt" }
}
}الصيغة new Sources.SourceSetSpec { … } (مع import "elide:Sources.pkl" as Sources) هي الصيغة الطويلة للمُدخل.
المسارات أنماط glob أو مجلدات نسبةً إلى المشروع؛ ويُجتاز المجلد تعاوديًا.
الأسبقية
كل خاصية مصرَّح بها تستبدل الاصطلاح لتلك الخاصية وحدها.
| الخاصية | عند حذفها | عند التصريح بها |
|---|---|---|
type | تُستنتج من الاسم | تُستخدم دائمًا |
paths | البنية الاصطلاحية لهذا الاسم | تُستخدم كما هي |
resources | src/<name>/resources إن وُجد | تُستخدم كما هي |
dependsOn | ترى مجموعات الاختبار والأمثلة main | تُستخدم كما هي؛ القيمة الفارغة تعني لا شيء |
type | يُستنتج من | السلوك |
|---|---|---|
test | test، tests | يشغّلها elide test؛ وتحلّ testPackages. |
example | example، examples | مجموعة إنتاج. |
source | أي اسم آخر | مجموعة إنتاج. |
other | — | مجموعة إنتاج. |
المُخرَجات التي لا تسمّي مصادر تحزّم كل مجموعات الإنتاج. والمجموعة المصرَّح بها التي تغطي مساراتها src/main
أو src/test تستبدل تلك المجموعة الاصطلاحية، فلا يُصرَّف أي ملف مرتين.
التبعيات و classpath
تحلّ مجموعات الإنتاج packages و modules و compileOnly و runtimeOnly و processors. وتضيف مجموعات الاختبار
testPackages والمجموعات التي تعتمد عليها. مجموعة الاختبار ذات dependsOn {} تُصرَّف وتعمل دون أصناف main
وموارده، لكنها تظل تحلّ packages. راجع التبعيات.
elide classpath # main:compile
elide classpath runtime # main:runtime
elide classpath test:runtime # [<source-set>:]<usage>يحلّ elide classpath قيمة classpath ويطبعها في سطر واحد، مع فصل المُدخلات بالرمز :. الاستخدامات: compile،
runtime، processor، modules، toolchain، provided؛ وأي قيمة أخرى تنتهي برمز الخروج 2. يكتب التثبيت أيضًا
.dev/dependencies/m2/{compile,runtime,test,processors}.classpath.
الموارد
على JVM، تكون الموارد على classpath أثناء التشغيل والاختبارات، وتُنسخ إلى ملفات JAR.
sources {
["main"] {
resources {
"assets/banner.txt"
new {
from = "config/services"
into = "META-INF"
}
}
}
}يُنسخ المسار البسيط إلى جذر المخرجات. ويُنسخ from (مجلد أو ملف) تحت into: يصبح config/services/app.Service
هو META-INF/services/app.Service. القيمة الافتراضية لـ into هي الجذر.
المُخرَجات
artifacts {
["app"] = new Jvm.Jar {} // every non-test source set
["lib"] = new Jvm.Jar { sources { "api" } }
}تتبع ملفات JAR الخاصة بالمصادر و Javadoc القاعدة نفسها. وتُضاف resources الخاصة بملف JAR إلى موارد مجموعاته. راجع
تجميع JAR.
اللغات
يحدد امتداد الملف اللغة: .java، .kt، .js/.mjs/.cjs/.jsx،
.ts/.mts/.cts/.tsx، .py. المجموعة التي تحتوي على Java و Kotlin تشغّل المُصرّفين كليهما؛ والمجموعة التي لا
تحتوي على أي منهما لا تشغّل أي تصريف لـ JVM. توضع إعدادات المُصرّف لمجموعة واحدة في كتلة اللغة، مع اسم المجموعة
مفتاحًا: jvm.java.sourceSets (راجع مُصرّف Java).
تُحتسب سكربتات Kotlin (.kts) في المجموعة مصادرَ Kotlin، لكنها لا تُنتج أصنافًا ولا يُتحقق من أنواعها.