Использование IntelliJ Plugin SDK для добавления пользовательского нового шаблона модуля (Android Studio)

#android #intellij-idea

#Android #intellij-идея

Вопрос:

Когда AndroidStudio перестала поддерживать файлы шаблонов проектов, они переключились на архитектуру плагинов. Я новичок в плагинах IntelliJ и хочу воссоздать шаблоны, которые я потерял.

Я пытаюсь использовать плагин для создания шаблона «Новый модуль». По сути, идея заключается в том, что пользователь щелкает правой кнопкой мыши по проекту приложения и выбирает «Новый общий модуль», и в проекте появится новый модуль со всеми моими пользовательскими файлами gradle и т. Д.

У меня возникли проблемы даже с созданием модуля в первую очередь. Вот «Рецепт» для плагина.

 fun RecipeExecutor.MyModuleSetup(
        moduleData: ModuleTemplateData,
        packageName: String,
        entityName: String,
        moduleName: String,
) {
    val (projectData) = moduleData
    val project = projectInstance ?: return
    addAllKotlinDependencies(moduleData)
    try {
        WriteCommandAction.writeCommandAction(project).compute(ThrowableComputable<Module, RuntimeException> {
            val f: VirtualFile = createProjectSubFile(ModuleManager.getInstance(project).modules[0]).contentRoots[0].path, "$moduleName/$moduleName.iml")
            val module = ModuleManager.getInstance(project).newModule(f.path, ModuleTypeId.JAVA_MODULE)
            PsiTestUtil.addContentRoot(module, f.parent)
            module
        })
    } catch (e: IOException) {
        throw RuntimeException(e)
    }
}

@Throws(IOException::class)
fun createProjectSubFile(projectPath: String?, relativePath: String?): VirtualFile {
    val f = File(projectPath, relativePath)
    FileUtil.ensureExists(f.getParentFile())
    FileUtil.ensureCanCreateFile(f)
    val created: Boolean = f.createNewFile()
    if (!created amp;amp; !f.exists()) {
        throw AssertionError("Unable to create the project sub file: "   f.getAbsolutePath())
    }
    return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f)!!
}

 

Если я использую плагин для создания нового модуля с именем «mod1» в проекте под названием «app1», я надеюсь, что новый директор будет таким:

/Users/xxxxxx/Documents/tests/app1 / mod1

Вместо этого ничего не происходит! Должен ли я что-то написать, прежде чем оно появится?

Является ли это правильным подходом к созданию нового модуля в проекте с помощью плагина?

Спасибо, ребята!