buildscript { repositories { maven { url 'https://jitpack.io' } } dependencies { classpath "com.github.hyperskill:hs-gradle-plugin:release-SNAPSHOT" } configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } } static String sanitizeName(String name) { return name.replaceAll("[ /\\\\:<>\"?*|()]", "_").replaceAll("(^[.]+)|([.]+\$)", "") } rootProject.projectDir.eachDirRecurse { if (!isTaskDir(it) || it.path.contains(".idea")) { return } def taskRelativePath = rootDir.toPath().relativize(it.toPath()) def parts = [] for (name in taskRelativePath) { parts.add(sanitizeName(name.toString())) } def moduleName = parts.join("-") include "$moduleName" project(":$moduleName").projectDir = it } def isTaskDir(File dir) { return new File(dir, "src").exists() || new File(dir, "test").exists() } include 'util'