* Intellij Idea plugin maintenance #808
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
major goals:
Details 1.
ApplicationComponent/ProjectComponent/ModuleComponentare declared outdated and some API are already removed.RoboVmApplicationComponentWas responsible for SDK file unpacking, JDK selection dialog and XCode missing. Replaced with:
RoboVmAppSetupService-- on demand service that show XCode related dialog and does debugger setup;RoboVmSdkUnpackService-- on demand service that unpacks SDK files;RoboVmProjectStartupActivity-- triggers once project is loaded and callsRoboVmAppSetupServiceto handle Xcode installation and debugger setup;RoboVmProjectComponentWas triggered once project is loaded and was calling
RoboVmPlugin.initializeProject(project), replaced withRoboVmProjectStartupActivity.RoboVmSdkUpdateComponentWas observing for each module content change notifications to detect if module is RoboVM one and setup RoboVM SDK to it.
Details 2. RoboVM facet
Facets are using for attaching specific configuration to modules. Quite sarcastic as it was quite annoying with android facet that was breaking RoboVM/Java projects and now RoboVM facet is introduced. It is being used to
markmodules as RoboVM ones during project import based on gradle/maven build system only in cases where RoboVM plugin is used. That is a true way to mark and later recognizes modules as RoboVM ones. It fixes previous logic for recognizing modules: each module's content root was scanned forrobovm.xmlfile and only in this case it was assumed as RoboVM one. Such scan was happening:Create IPA/Run/Open Interface Builderactions. In case of big projects this cause UI freeze and often made Idea to hung;RoboVmSdkUpdateComponent) during project import and so on;More over such logic produced false detection results and as result if there was
robovm.xmlfiles located in directory SDK of such module was forcly replaced with RoboVM one.Gradle build system
RoboVMGradleProjectResolverrecognizes RoboVM plugin activated inbuild.gradleand attaches own data to DataNode of imported node. LaterRoboVmModuleDataServicerecognize this data and configure module with Facet/SDK.Maven build system
RoboVmMavenImporterimplementsFacetImporter-- an outdated but still in use class that just automatically creates facet for specified plugin group/artifact id. All that to be done is to attach facet/configure SDK.Intellij Idea managed project
Project created from template -- automatically being attached with facet/sdk. In other cases its possible to attach RoboVM facet to module in
Project Structuredialogue.Details 3. Other changes