void (@NotNull Module module, @NotNull JavaParameters javaParameters, @NotNull MavenProject mavenProject, @NotNull String plugin, @NotNull Element config, @NotNull UnaryOperator<String> runtimeProperties) { MavenDomProjectModel domModel = MavenDomUtil.getMavenDomProjectModel(module.getProject(), mavenProject.getFile()); MavenTestRunningSettings testRunningSettings = MavenProjectSettings.getInstance(module.getProject()).getTestRunningSettings(); List<String> paths = MavenJDOMUtil.findChildrenValuesByPath(config, "additionalClasspathElements", "additionalClasspathElement"); if (paths.size() > 0) { for (String pathLine : paths) { for (String path : pathLine.split(",")) { javaParameters.getClassPath().add(resolvePluginProperties(plugin, path.trim(), domModel)); } } } List<String> excludes = getExcludedArtifacts(config); String scopeExclude = MavenJDOMUtil.findChildValueByPath(config, "classpathDependencyScopeExclude"); if (scopeExclude != null || !excludes.isEmpty()) { for (MavenArtifact dependency : mavenProject.getDependencies()) { if (scopeExclude!=null && SCOPE_FILTER.getOrDefault(scopeExclude, Collections.emptyList()).contains(dependency.getScope()) || excludes.contains(dependency.getGroupId() + ":" + dependency.getArtifactId())) { File file = dependency.getFile(); javaParameters.getClassPath().remove(file.getAbsolutePath()); } } } if (testRunningSettings.isPassSystemProperties()) { if (isEnabled(plugin, "systemPropertyVariables")) { Element systemPropertyVariables = config.getChild("systemPropertyVariables"); if (systemPropertyVariables != null) { for (Element element : systemPropertyVariables.getChildren()) { String propertyName = element.getName(); if (!javaParameters.getVMParametersList().hasProperty(propertyName)) { String value = resolvePluginProperties(plugin, element.getValue(), domModel); value = resolveVmProperties(javaParameters.getVMParametersList(), value); if (isResolved(plugin, value)) { javaParameters.getVMParametersList().addProperty(propertyName, value); } } } } } if (isEnabled(plugin, "systemPropertiesFile")) { Element systemPropertiesFile = config.getChild("systemPropertiesFile"); if (systemPropertiesFile != null) { String systemPropertiesFilePath = systemPropertiesFile.getTextTrim(); if (StringUtil.isNotEmpty(systemPropertiesFilePath) && !FileUtil.isAbsolute(systemPropertiesFilePath)) { systemPropertiesFilePath = mavenProject.getDirectory() + '/' + systemPropertiesFilePath; } if (StringUtil.isNotEmpty(systemPropertiesFilePath) && new File(systemPropertiesFilePath).exists()) { try (Reader fis = Files.newBufferedReader(Paths.get(systemPropertiesFilePath), StandardCharsets.ISO_8859_1)) { Map<String, String> properties = PropertiesUtil.loadProperties(fis); properties.forEach((pName, pValue) -> javaParameters.getVMParametersList().addProperty(pName, pValue)); } catch (IOException e) { LOG.warn("Can't read property file '" + systemPropertiesFilePath + "': " + e.getMessage()); } } } } } if (testRunningSettings.isPassEnvironmentVariables() && isEnabled(plugin, "environmentVariables")) { Element environmentVariables = config.getChild("environmentVariables"); if (environmentVariables != null) { for (Element element : environmentVariables.getChildren()) { String variableName = element.getName(); if (!javaParameters.getEnv().containsKey(variableName)) { String value = resolvePluginProperties(plugin, element.getValue(), domModel); value = resolveVmProperties(javaParameters.getVMParametersList(), value); if (isResolved(plugin, value)) { javaParameters.addEnv(variableName, value); } } } } } if (testRunningSettings.isPassArgLine() && isEnabled(plugin, "argLine")) { Element argLine = config.getChild("argLine"); String propertyText = argLine != null ? argLine.getTextTrim() : "${argLine}"; String value = resolvePluginProperties(plugin, propertyText, domModel); value = resolveVmProperties(javaParameters.getVMParametersList(), value); if (StringUtil.isNotEmpty(value) && isResolved(plugin, value)) { value = resolveRuntimeProperties(value, runtimeProperties); javaParameters.getVMParametersList().addParametersString(value); } } }