use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.
the class AbstractProjectOperations method addDependencies.
@Override
public List<Dependency> addDependencies(final String moduleName, final Collection<? extends Dependency> newDependencies, boolean addToDependencyManagement, boolean checkFullDependency) {
Validate.isTrue(isProjectAvailable(moduleName), "Dependency modification prohibited; no such module '%s'", moduleName);
final Pom parentPom = getPomFromModuleName("");
boolean isSamePom = false;
Pom pom = null;
if ("".equals(moduleName)) {
isSamePom = true;
pom = parentPom;
} else {
pom = getPomFromModuleName(moduleName);
}
Validate.notNull(pom, "The pom is not available, so dependencies cannot be added");
final Document parentDocument = XmlUtils.readXml(fileManager.getInputStream(parentPom.getPath()));
Document document = null;
if (isSamePom) {
document = parentDocument;
} else {
document = XmlUtils.readXml(fileManager.getInputStream(pom.getPath()));
}
return writeDependencyInPom(newDependencies, parentPom, pom, parentDocument, document, parentDocument.getDocumentElement(), document.getDocumentElement(), addToDependencyManagement, isSamePom, checkFullDependency);
}
use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.
the class AutomaticProjectUpgradeService method notify.
public void notify(final String upstreamDependency, final String downstreamDependency) {
if (bundleVersionInfo != null && ProjectMetadata.isValid(upstreamDependency)) {
final String moduleName = ProjectMetadata.getModuleName(upstreamDependency);
// Project Metadata available.
if (!projectOperations.isProjectAvailable(moduleName)) {
return;
}
for (final Pom pom : projectOperations.getPoms()) {
final Set<Property> rooVersionResults = pom.getPropertiesExcludingValue(new Property("roo.version"));
for (final Property existingProperty : rooVersionResults) {
final VersionInfo rooVersion = extractVersionInfoFromString(existingProperty.getValue());
if (rooVersion != null) {
if (rooVersion.compareTo(bundleVersionInfo) < 0) {
final Property newProperty = new Property(existingProperty.getName(), bundleVersionInfo.toString());
projectOperations.addProperty(moduleName, newProperty);
break;
}
}
}
final Set<Property> springVersionResults = pom.getPropertiesExcludingValue(new Property("spring.version"));
for (final Property existingProperty : springVersionResults) {
final VersionInfo springVersion = extractVersionInfoFromString(existingProperty.getValue());
if (springVersion != null) {
final VersionInfo latestSpringVersion = extractVersionInfoFromString(SPRING_VERSION);
if (springVersion.compareTo(latestSpringVersion) < 0) {
final Property newProperty = new Property(existingProperty.getName(), latestSpringVersion.toString());
projectOperations.addProperty(moduleName, newProperty);
break;
}
}
}
}
}
}
use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.
the class PomManagementServiceImplTest method getMockPom.
private Pom getMockPom(final String moduleName, final String canonicalPath) {
final Pom mockPom = mock(Pom.class);
when(mockPom.getModuleName()).thenReturn(moduleName);
when(mockPom.getPath()).thenReturn(canonicalPath);
when(mockPomFactory.getInstance(any(Element.class), eq(canonicalPath), eq(moduleName))).thenReturn(mockPom);
return mockPom;
}
use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.
the class PomManagementServiceImplTest method testGetPomOfSingleModuleProjectWhenParentHasNoRelativePath.
@Test
public void testGetPomOfSingleModuleProjectWhenParentHasNoRelativePath() throws Exception {
// Set up
setUpWorkingDirectory("single");
final String canonicalPath = getCanonicalPath("single/pom.xml");
when(mockFileMonitorService.getDirtyFiles(PomManagementServiceImpl.class.getName())).thenReturn(Arrays.asList(canonicalPath));
final Pom mockPom = getMockPom(ROOT_MODULE_NAME, canonicalPath);
// Invoke
final Collection<Pom> poms = service.getPoms();
// Check
assertEquals(1, poms.size());
assertEquals(mockPom, poms.iterator().next());
verifyProjectMetadataNotification(ROOT_MODULE_NAME);
}
use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.
the class MavenOperationsImpl method createMultimoduleProject.
public void createMultimoduleProject(final JavaPackage topLevelPackage, final String projectName, final Integer majorJavaVersion, final Multimodule multimodule) {
Validate.isTrue(isCreateProjectAvailable(), "Project creation is unavailable at this time");
Validate.notNull(multimodule, "Multimodule must not be null");
final PackagingProvider parentPackagingProvider = getPackagingProvider(getPackagingProviderRegistry().getPackagingProvider("pom"));
final PackagingProvider warPackagingProvider = getPackagingProvider(getPackagingProviderRegistry().getPackagingProvider("war"));
final PackagingProvider jarPackagingProvider = getPackagingProvider(getPackagingProviderRegistry().getPackagingProvider("jar"));
// Create parent pom
parentPackagingProvider.createArtifacts(topLevelPackage, projectName, getJavaProductVersion(majorJavaVersion), null, "", this);
// Add java.version property if specified
if (majorJavaVersion != null) {
getProjectOperations().addProperty("", new Property("java.version", getJavaVersion(majorJavaVersion)));
}
Pom pom = getProjectOperations().getPomFromModuleName("");
// service-impl
if (multimodule == Multimodule.STANDARD) {
createModule("model", jarPackagingProvider, "model");
createModule("repository", jarPackagingProvider, "repository");
// ROO-3762: Generate integration module by default
createModule("integration", jarPackagingProvider, "integration");
createModule("service-api", jarPackagingProvider, "service.api");
createModule("service-impl", jarPackagingProvider, "service.impl");
// Add dependencies between modules
getProjectOperations().addDependency("repository", pom.getGroupId(), "model", "${project.version}");
getProjectOperations().addDependency("integration", pom.getGroupId(), "model", "${project.version}");
getProjectOperations().addDependency("service-api", pom.getGroupId(), "model", "${project.version}");
getProjectOperations().addDependency("service-impl", pom.getGroupId(), "repository", "${project.version}");
getProjectOperations().addDependency("service-impl", pom.getGroupId(), "service.api", "${project.version}");
getProjectOperations().addDependency("service-impl", pom.getGroupId(), "model", "${project.version}");
getProjectOperations().addDependency("service-impl", pom.getGroupId(), "integration", "${project.version}");
}
// In all cases, multimodule architectures have an application module
// where Spring Boot artifacts are created
createModule("application", warPackagingProvider, "application", "");
installApplicationConfiguration("application");
// ROO-3687: Generates necessary Spring Boot artifacts into application
// module.
createSpringBootApplicationClass(topLevelPackage, projectName);
// createApplicationTestsClass(topLevelPackage, projectName);
// ROO-3741: Including banner.txt on application module
addBannerFile(getPomFromModuleName("application"));
// add application-dev.properties on application module
addApplicationDevPropertiesFile(getPomFromModuleName("application"), topLevelPackage);
// application module and the generated modules above
if (multimodule == Multimodule.STANDARD) {
getProjectOperations().addDependency("application", pom.getGroupId(), "service.impl", "${project.version}");
getProjectOperations().addDependency("application", pom.getGroupId(), "service.api", "${project.version}");
getProjectOperations().addDependency("application", pom.getGroupId(), "repository", "${project.version}");
getProjectOperations().addDependency("application", pom.getGroupId(), "model", "${project.version}");
}
}
Aggregations