/** * Install module to selected server * * @param serverId * @param groupId * @param artifactId * @param version * @throws MojoExecutionException * @throws MojoFailureException */ public void installModule(String serverId, String groupId, String artifactId, String version) throws MojoExecutionException, MojoFailureException { AttributeHelper helper = new AttributeHelper(prompter); if (serverId == null) { File currentProperties = helper.getCurrentServerPath(); if (currentProperties != null) serverId = currentProperties.getName(); } File serverPath = helper.getServerPath(serverId); Artifact artifact = getArtifactForSelectedParameters(helper, groupId, artifactId, version); String originalId = artifact.getArtifactId(); artifact.setArtifactId(artifact.getArtifactId() + "-omod"); File modules = new File(serverPath, SDKConstants.OPENMRS_SERVER_MODULES); modules.mkdirs(); Element[] artifactItems = new Element[1]; artifactItems[0] = artifact.toElement(modules.getPath()); File[] listOfModules = modules.listFiles(); boolean versionUpdated = false; boolean removed = false; for (File itemModule : listOfModules) { String[] parts = itemModule.getName().split("-"); String oldV = StringUtils.join(Arrays.copyOfRange(parts, 1, parts.length), "-"); if (originalId.equals(parts[0])) { try { Version oldVersion = new Version(oldV.substring(0, oldV.lastIndexOf('.'))); Version newVersion = new Version(artifact.getVersion()); if (oldVersion.higher(newVersion)) { throw new MojoExecutionException( String.format(TEMPLATE_DOWNGRADE, oldVersion.toString(), newVersion.toString())); } else if (oldVersion.lower(newVersion)) { boolean agree = helper.dialogYesNo(String.format(TEMPLATE_UPDATE, artifact.getVersion())); if (!agree) { return; } } versionUpdated = true; removed = itemModule.delete(); break; } catch (PrompterException e) { throw new MojoExecutionException(e.getMessage()); } } } executeMojo( plugin( groupId(SDKConstants.PLUGIN_DEPENDENCIES_GROUP_ID), artifactId(SDKConstants.PLUGIN_DEPENDENCIES_ARTIFACT_ID), version(SDKConstants.PLUGIN_DEPENDENCIES_VERSION)), goal("copy"), configuration(element(name("artifactItems"), artifactItems)), executionEnvironment(mavenProject, mavenSession, pluginManager)); PropertyManager properties = new PropertyManager(new File(serverPath, SDKConstants.OPENMRS_SERVER_PROPERTIES).getPath()); String[] params = {artifact.getGroupId(), originalId, artifact.getVersion()}; String module = StringUtils.join(params, "/"); properties.addToValueList(SDKConstants.PROPERTY_USER_MODULES, module); properties.apply(); if (versionUpdated) { if (removed) getLog().info(String.format(DEFAULT_UPDATE_MESSAGE, originalId, artifact.getVersion())); } else getLog().info(String.format(DEFAULT_OK_MESSAGE, originalId)); }