protected <T extends JpsElement> JpsModule addModule( String moduleName, String[] srcPaths, @Nullable String outputPath, @Nullable String testOutputPath, JpsSdk<T> sdk) { JpsModule module = myProject.addModule(moduleName, JpsJavaModuleType.INSTANCE); final JpsSdkType<T> sdkType = sdk.getSdkType(); final JpsSdkReferencesTable sdkTable = module.getSdkReferencesTable(); sdkTable.setSdkReference(sdkType, sdk.createReference()); if (sdkType instanceof JpsJavaSdkTypeWrapper) { final JpsSdkReference<T> wrapperRef = sdk.createReference(); sdkTable.setSdkReference( JpsJavaSdkType.INSTANCE, JpsJavaExtensionService.getInstance() .createWrappedJavaSdkReference((JpsJavaSdkTypeWrapper) sdkType, wrapperRef)); } module.getDependenciesList().addSdkDependency(sdkType); if (srcPaths.length > 0 || outputPath != null) { for (String srcPath : srcPaths) { module.getContentRootsList().addUrl(JpsPathUtil.pathToUrl(srcPath)); module.addSourceRoot(JpsPathUtil.pathToUrl(srcPath), JavaSourceRootType.SOURCE); } JpsJavaModuleExtension extension = JpsJavaExtensionService.getInstance().getOrCreateModuleExtension(module); if (outputPath != null) { extension.setOutputUrl(JpsPathUtil.pathToUrl(outputPath)); if (!StringUtil.isEmpty(testOutputPath)) { extension.setTestOutputUrl(JpsPathUtil.pathToUrl(testOutputPath)); } else { extension.setTestOutputUrl(extension.getOutputUrl()); } } else { extension.setInheritOutput(true); } } return module; }
private static void loadJavaModuleExtension(JpsModule module, Element rootModelComponent) { final JpsJavaModuleExtension extension = getService().getOrCreateModuleExtension(module); final Element outputTag = rootModelComponent.getChild(OUTPUT_TAG); if (outputTag != null) { extension.setOutputUrl(outputTag.getAttributeValue(URL_ATTRIBUTE)); } final Element testOutputTag = rootModelComponent.getChild(TEST_OUTPUT_TAG); if (testOutputTag != null) { extension.setTestOutputUrl(testOutputTag.getAttributeValue(URL_ATTRIBUTE)); } extension.setInheritOutput( Boolean.parseBoolean( rootModelComponent.getAttributeValue(INHERIT_COMPILER_OUTPUT_ATTRIBUTE))); extension.setExcludeOutput(rootModelComponent.getChild(EXCLUDE_OUTPUT_TAG) != null); final String languageLevel = rootModelComponent.getAttributeValue(MODULE_LANGUAGE_LEVEL_ATTRIBUTE); if (languageLevel != null) { extension.setLanguageLevel(LanguageLevel.valueOf(languageLevel)); } loadAdditionalRoots(rootModelComponent, ANNOTATION_PATHS_TAG, extension.getAnnotationRoots()); loadAdditionalRoots(rootModelComponent, JAVADOC_PATHS_TAG, extension.getJavadocRoots()); }