Package org.jboss.forge.project

Examples of org.jboss.forge.project.Project


    * @throws Abort
    */
   public void installFromProject(final DirectoryResource buildDir, final Dependency coordinates) throws Abort
   {
      DirectoryResource root = projectFactory.findProjectRootRecusively(buildDir);
      Project rootProject = projectFactory.findProject(root);
      if (rootProject == null)
      {
         throw new IllegalArgumentException("Unable to recognise plugin project in ["
                  + buildDir.getFullyQualifiedName() + "]");
      }
      Project pluginProject = findPluginProject(rootProject, coordinates);
      if (pluginProject == null)
      {
         throw new Abort("The project does not contain a valid Forge Plugin project. Installation aborted");
      }

      DependencyFacet deps = pluginProject.getFacet(DependencyFacet.class);

      String apiVersion = null;
      Dependency directDependency = deps.getDirectDependency(SHELL_API);
      if ((directDependency != null) && !Strings.isNullOrEmpty(directDependency.getVersion()))
         apiVersion = directDependency.getVersion();

      if (apiVersion == null)
      {
         // Fall back to checking managed dependencies for a version
         Dependency managedDependency = deps.getManagedDependency(SHELL_API);
         if ((managedDependency != null) && !Strings.isNullOrEmpty(managedDependency.getVersion()))
            apiVersion = managedDependency.getVersion();
      }

      if (apiVersion == null)
      {
         // Now completely give up and just use the result from the build
         Dependency effectiveDependency = deps.getEffectiveDependency(SHELL_API);
         if (effectiveDependency != null)
            apiVersion = effectiveDependency.getVersion();
         else
            apiVersion = environment.getRuntimeVersion();
      }

      /**
       * Make sure that our PROVIDED modules are not included in the module dependencies
       */
      // TODO Weld bug requires us to correct /add module for Seam Render dependency
      List<String> groupIds = Arrays.asList("org.jboss.seam.render", "org.jboss.forge");
      List<String> providedDeps = Arrays.asList("forge-javaee-api", "forge-maven-api", "forge-scaffold-api",
               "forge-scaffoldx-api", "forge-shell-api");
      List<Dependency> dependencies = deps.getDependencies();
      for (Dependency dependency : dependencies)
      {
         if (groupIds.contains(dependency.getGroupId())
                  && !(ScopeType.PROVIDED.equals(dependency.getScopeTypeEnum())
                  || ScopeType.TEST.equals(dependency.getScopeTypeEnum())))
         {
            ShellMessages.warn(shell, "Dependency [" + dependency.toCoordinates()
                     + "] was not correctly marked as PROVIDED scope; this has been corrected.");
            deps.addDirectDependency(DependencyBuilder.create(dependency).setScopeType(ScopeType.PROVIDED));
         }
         else if ("org.jboss.forge".equals(dependency.getGroupId())
                  && !providedDeps.contains(dependency.getArtifactId()))
         {
            Dependency effectiveDependency = deps.getEffectiveDependency(dependency);
            if (effectiveDependency != null && ScopeType.TEST != effectiveDependency.getScopeTypeEnum())
            {
               ShellMessages.warn(shell,
                        "Plugin has a dependency on internal Forge API [" + dependency
                                 + "] - this is not allowed and may cause failures.");
            }
         }
      }

      ShellMessages.info(shell, "Invoking build with underlying build system.");
      // Build the whole project
      // Inter-module dependencies are not resolved when mvn package is just run. Perhaps it should install ?
      Resource<?> artifact;
      if (rootProject.equals(pluginProject))
      {
         artifact = rootProject.getFacet(PackagingFacet.class).createBuilder().runTests(false).build();
      }
      else
      {
         rootProject.getFacet(PackagingFacet.class).createBuilder().addArguments("clean", "install").runTests(false)
                  .build();
         artifact = pluginProject.getFacet(PackagingFacet.class).getFinalArtifact();
      }
      // However, get only the necessary plugin artifact
      if ((artifact != null) && artifact.exists())
      {
         MetadataFacet meta = rootProject.getFacet(MetadataFacet.class);
View Full Code Here


    * @param project
    * @return
    */
   Project findPluginProject(final Project rootProject, final Dependency coordinates)
   {
      final Project pluginProject;
      Model rootPom = rootProject.getFacet(MavenCoreFacet.class).getPOM();
      Dependency projectDependency = DependencyBuilder.create()
               .setGroupId(rootPom.getGroupId() == null ? rootPom.getParent().getGroupId() : rootPom.getGroupId())
               .setArtifactId(rootPom.getArtifactId()).setPackagingType(rootPom.getPackaging());

      // 1) Check if the root project is a multimodule project
      if (projectDependency.getPackagingTypeEnum() == PackagingType.BASIC)
      {
         Project tempPluginProject = null;
         DirectoryResource projectDir = rootProject.getProjectRoot();
         for (String module : rootPom.getModules())
         {
            DirectoryResource moduleDir = projectDir.getChildDirectory(module);
            // 1.1) If yes, traverse the projects
            Project moduleProject = projectFactory.findProject(moduleDir);
            // If module is empty, avoid infinite recursion
            if (moduleProject.equals(rootProject))
            {
               continue;
            }
            tempPluginProject = findPluginProject(moduleProject, coordinates);
            if (tempPluginProject != null)
View Full Code Here

      return root;
   }

   public Project findProjectRecursively(final DirectoryResource startingPath)
   {
      Project project = null;
      List<ProjectLocator> locators = getLocators();
      for (ProjectLocator locator : locators)
      {
         DirectoryResource root = locateRecursively(startingPath, locator);
View Full Code Here

      return project;
   }

   public Project createProject(final DirectoryResource root, final Class<? extends Facet>... facetTypes)
   {
      Project project = null;
      List<ProjectLocator> locators = getLocators();
      for (ProjectLocator locator : locators)
      {
         if (root != null)
         {
View Full Code Here

   /**
    * An exception-safe method of determining whether a directory contains a project.
    */
   public boolean containsProject(final DirectoryResource dir)
   {
      Project project = findProject(dir);
      return project != null;
   }
View Full Code Here

      return project != null;
   }

   public Project findProject(final DirectoryResource dir)
   {
      Project project = null;
      if (dir != null)
      {
         List<ProjectLocator> locators = getLocators();
         for (ProjectLocator locator : locators)
         {
View Full Code Here

    * @throws ConfigurationException
    */
   @Produces
   public Configuration getConfiguration(Shell shell) throws ConfigurationException
   {
      Project project = shell.getCurrentProject();
      if (project == null)
      {
         return factory.getUserConfig();
      }
      if (!project.hasFacet(ConfigurationFacet.class))
      {
         // Installing manually
         ConfigurationFacet facet = new ConfigurationFacet(factory);
         project.installFacet(facet);
      }
      return project.getFacet(ConfigurationFacet.class).getConfiguration();
   }
View Full Code Here

         pom.setParent(parent);
         mvn.setPOM(pom);
      }
      else if ((path != null) && factory.containsProject(path.reify(DirectoryResource.class)))
      {
         Project parentProject = factory.findProject(path.reify(DirectoryResource.class));
         MavenCoreFacet parentCore = parentProject.getFacet(MavenCoreFacet.class);

         parent = new Parent();
         parent.setArtifactId(parentCore.getMavenProject().getArtifactId());
         parent.setGroupId(parentCore.getMavenProject().getGroupId());
         parent.setVersion(parentCore.getMavenProject().getVersion());

         if (relativePath != null)
         {
            parent.setRelativePath(relativePath);
         }

         Model pom = mvn.getPOM();
         pom.setParent(parent);
         mvn.setPOM(pom);
      }
      else if (relativePath != null)
      {
         PathspecParser parser = new PathspecParser(resources, shell.getCurrentProject().getProjectRoot(), relativePath);
         List<Resource<?>> resolvedResources = parser.resolve();
         if (!resolvedResources.isEmpty()
                  && factory.containsProject(resolvedResources.get(0).reify(DirectoryResource.class)))
         {
            Project parentProject = factory.findProject(resolvedResources.get(0).reify(DirectoryResource.class));
            MavenCoreFacet parentCore = parentProject.getFacet(MavenCoreFacet.class);

            parent = new Parent();
            parent.setArtifactId(parentCore.getMavenProject().getArtifactId());
            parent.setGroupId(parentCore.getMavenProject().getGroupId());
            parent.setVersion(parentCore.getMavenProject().getVersion());
View Full Code Here

            }
         }
      }
      for (String module : pom.getModules())
      {
         Project subProject = projectFactory.findProject(
                  currentProject.getProjectRoot().getChildDirectory(module));

         if (update(subProject, append(parentProperties, pom.getProperties())))
         {
            mavenFacet.setPOM(pom);
View Full Code Here

         pom.setParent(parent);
         mvn.setPOM(pom);
      }
      else if ((path != null) && factory.containsProject(path.reify(DirectoryResource.class)))
      {
         Project parentProject = factory.findProject(path.reify(DirectoryResource.class));
         MavenCoreFacet parentCore = parentProject.getFacet(MavenCoreFacet.class);

         parent = new Parent();
         parent.setArtifactId(parentCore.getMavenProject().getArtifactId());
         parent.setGroupId(parentCore.getMavenProject().getGroupId());
         parent.setVersion(parentCore.getMavenProject().getVersion());

         if (relativePath != null)
         {
            parent.setRelativePath(relativePath);
         }

         Model pom = mvn.getPOM();
         pom.setParent(parent);
         mvn.setPOM(pom);
      }
      else if (relativePath != null)
      {
         PathspecParser parser = new PathspecParser(resources, shell.getCurrentProject().getProjectRoot(), relativePath);
         List<Resource<?>> resolvedResources = parser.resolve();
         if (!resolvedResources.isEmpty()
                  && factory.containsProject(resolvedResources.get(0).reify(DirectoryResource.class)))
         {
            Project parentProject = factory.findProject(resolvedResources.get(0).reify(DirectoryResource.class));
            MavenCoreFacet parentCore = parentProject.getFacet(MavenCoreFacet.class);

            parent = new Parent();
            parent.setArtifactId(parentCore.getMavenProject().getArtifactId());
            parent.setGroupId(parentCore.getMavenProject().getGroupId());
            parent.setVersion(parentCore.getMavenProject().getVersion());
View Full Code Here

TOP

Related Classes of org.jboss.forge.project.Project

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.