以编程方式创建IntelliJ模块

时间:2018-04-07 17:45:04

标签: 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
}

}

这就是我目前所拥有的,而且我得到了这个:

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

我错过了哪些文档页面?谢谢!

1 个答案:

答案 0 :(得分:1)

在图2中,您正在显示&#34;项目&#34;而不是&#34;模块&#34;,请参阅the offical doc

您可能希望实现DirectoryProjectGeneratorBase<YourSettingsBean>并在plugin.xml中注册(例如,您可以参考this file my julia plugindirectoryProjectGenerator

generateProject的实现中,您可以使用以下命令创建文件,将文件设置为源root / test root / excluded root:

    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)
    }

这应该在文件BTW中遗漏。所以这不是你的错。但我建议你看一下现有的插件项目(比如上面提到的julia插件,the mathemetica pluginthe covscript plugin),它们对新来者非常有帮助。