Search in sources :

Example 66 with Pom

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);
}
Also used : Document(org.w3c.dom.Document) Pom(org.springframework.roo.project.maven.Pom)

Example 67 with Pom

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;
                    }
                }
            }
        }
    }
}
Also used : Pom(org.springframework.roo.project.maven.Pom)

Example 68 with Pom

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;
}
Also used : Element(org.w3c.dom.Element) Pom(org.springframework.roo.project.maven.Pom)

Example 69 with Pom

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);
}
Also used : Pom(org.springframework.roo.project.maven.Pom) Test(org.junit.Test)

Example 70 with Pom

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}");
    }
}
Also used : PackagingProvider(org.springframework.roo.project.packaging.PackagingProvider) Pom(org.springframework.roo.project.maven.Pom)

Aggregations

Pom (org.springframework.roo.project.maven.Pom)86 Element (org.w3c.dom.Element)19 JavaType (org.springframework.roo.model.JavaType)16 Document (org.w3c.dom.Document)16 Test (org.junit.Test)14 ArrayList (java.util.ArrayList)10 ClassOrInterfaceTypeDetails (org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetails)9 ClassOrInterfaceTypeDetailsBuilder (org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetailsBuilder)9 AnnotationMetadataBuilder (org.springframework.roo.classpath.details.annotations.AnnotationMetadataBuilder)9 Dependency (org.springframework.roo.project.Dependency)9 RooJavaType (org.springframework.roo.model.RooJavaType)7 InvalidSyntaxException (org.osgi.framework.InvalidSyntaxException)5 ServiceReference (org.osgi.framework.ServiceReference)5 ControllerMVCResponseService (org.springframework.roo.addon.web.mvc.controller.addon.responses.ControllerMVCResponseService)5 JavaPackage (org.springframework.roo.model.JavaPackage)5 List (java.util.List)4 Plugin (org.springframework.roo.project.Plugin)4 Completion (org.springframework.roo.shell.Completion)4 HashMap (java.util.HashMap)3 DataOnDemandCreatorProvider (org.springframework.roo.addon.test.providers.DataOnDemandCreatorProvider)3