intellij-idea - 以编程方式创建 IntelliJ 模块

标签 intellij-idea module kotlin

我正在尝试制作一个合适的项目,例如当您通过 Kotlin 向导或其他东西时的一个设置,但我无法弄清楚。

class SpigotKtWizard : ModuleBuilder() {

override fun setupRootModel(modifiableRootModel: ModifiableRootModel?) {}

override fun getModuleType(): ModuleType<*> {
    return SpigotKtModuleType.instance
}

override fun createWizardSteps(wizardContext: WizardContext, modulesProvider: ModulesProvider): Array<ModuleWizardStep> {
    return arrayOf(BuildOptionsStep())
}

override fun createProject(name: String?, path: String?): Project? {
    val project = super.createProject(name, path) ?: return null
    val d = project.baseDir.createChildData(this, "Test")
    File(d.path).writeText("Testing boyyyy")
    return project
}

}

这是我目前拥有的,我得到了这个:



但其他项目(特别是我试图实现的相同设计)看起来更像这样:



文档中是否有我错过的页面?

最佳答案

在图 2 中,您显示的是“项目”而不是“模块”,请参阅 the offical doc .

您可能想要实现 DirectoryProjectGeneratorBase<YourSettingsBean>并注册一个(例如,您可以引用 this file my julia plugin )directoryProjectGenerator在 plugin.xml 中。

在您的 generateProject 的实现中,您可以使用以下方法创建文件,将文件设置为源根/测试根/排除根:

    ApplicationManager.getApplication().runWriteAction {
        val modifiableModel: ModifiableRootModel = ModifiableModelsProvider.SERVICE.getInstance().getModuleModifiableModel(module)
        module.rootManager.modifiableModel.apply {
            inheritSdk()
            contentEntries.firstOrNull()?.apply {
                addExcludeFolder(findOrCreate(baseDir, "out", module))
                addSourceFolder(findOrCreate(baseDir, "src", module), false)
            }
            commit()
        }
        ModifiableModelsProvider.SERVICE.getInstance().commitModuleModifiableModel(modifiableModel)
    }

这应该在文档中丢失,顺便说一句。所以这不是你的错。但我建议你看看现有的插件项目(比如上面提到的 julia 插件,the mathemetica pluginthe covscript plugin),它们对新手非常有帮助。

关于intellij-idea - 以编程方式创建 IntelliJ 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710209/

相关文章:

css - 如何引用作为gradle依赖项下载的bootstrap的CSS?

javascript - 如何在nodejs内部调用导出函数?

module - 自动生成环境模块声明

java - 使用 UiBinder 构建的 GWT 应用程序的本地化在托管模式下不起作用

android - 为什么 Intellij Idea 显示 compatible ="no"for android emulator

intellij-idea - 如何将多个操作绑定(bind)到快捷方式

javascript - 使用 Browserify 加载 Node.js 模块

android - Jetpack 根据动态宽度撰写下一行的行项目

kotlin - 将类中使用的接口(interface)列表传递给构造函数

android - Kotlin - 可能错误地报告未使用的代码