بما في ذلك المشاريع الفرعية باستخدام بطاقة Wildcard في ملف إعدادات Gradle

StackOverflow https://stackoverflow.com/questions/2297032

  •  21-09-2019
  •  | 
  •  

سؤال

في Gradle ، تحتاج إلى تحديد المشاريع الفرعية ليتم بناؤها في ملف "Settings.Gradle". لبناء ثلاثة مشاريع أطفال ، ستفعل شيئًا كهذا:

include "child1", "child2", "child3"

المشكلة التي أواجهها هي أن لديّ عدد قليل من المشاريع التي يجب تضمينها. هل هناك طريقة لاستخدام بطاقة البرية في هذا التعريف؟ أنا أبحث عن شيء مثل هذا:

include "*"

هذا بالطبع لا يعمل. سيكون هذا أسهل كثيرًا في العمل نظرًا لأن لدي العديد من المشروعات الفرعية التي يجب تضمينها. هل هناك طريقة لتضمين الدلائل الفرعية تلقائيًا كمشاريع؟

هل كانت مفيدة؟

المحلول

هل يمكنك أن تفعل شيئًا مثل:

include (1..10).collect { "Child$it" }

لتشمل "child1" حتى "child10"؟

من الواضح أنك ستحتاج إلى تغيير التجميع إلى نوع من فحص المجلد ، ولكن هذا الاختبار السريع يعمل ثم يكون للفحص فرصة جيدة

نصائح أخرى

include rootDir.listFiles().findAll { 
     it.isDirectory() 
     && !( it =~ ".*/\\..*") // don't add directories starting with '.'
     && !( it =~ "^\\..*") // don't add directories starting with '.'
    }.collect { 
        it.getName() 
    }.toArray(new java.lang.String[0])

فعلت الخدعة بالنسبة لي

الدعم التالي يدعم التسلسل الهرمي للعمق التعسفي:

rootDir.eachFileRecurse { f ->
    if ( f.name == "build.gradle" ) {
        String relativePath = f.parentFile.absolutePath - rootDir.absolutePath
        String projectName = relativePath.replaceAll("[\\\\\\/]", ":")
        include projectName
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top