Example usage for org.apache.maven.project MavenProject getBasedir

List of usage examples for org.apache.maven.project MavenProject getBasedir

Introduction

In this page you can find the example usage for org.apache.maven.project MavenProject getBasedir.

Prototype

public File getBasedir() 

Source Link

Usage

From source file:org.eclipse.tycho.p2.facade.P2TargetPlatformResolver.java

License:Open Source License

protected TargetPlatform doResolvePlatform(final MavenSession session, final MavenProject project,
        List<ReactorProject> reactorProjects, List<Dependency> dependencies, P2Resolver resolver) {
    TargetPlatformConfiguration configuration = (TargetPlatformConfiguration) project
            .getContextValue(TychoConstants.CTX_TARGET_PLATFORM_CONFIGURATION);

    resolver.setRepositoryCache(repositoryCache);

    resolver.setOffline(session.isOffline());

    resolver.setLogger(new P2Logger() {
        public void debug(String message) {
            if (message != null && message.length() > 0) {
                getLogger().info(message); // TODO
            }//from w ww .j  a v a2s  .c  om
        }

        public void info(String message) {
            if (message != null && message.length() > 0) {
                getLogger().info(message);
            }
        }

        public boolean isDebugEnabled() {
            return getLogger().isDebugEnabled() && DebugUtils.isDebugEnabled(session, project);
        }
    });

    Map<File, ReactorProject> projects = new HashMap<File, ReactorProject>();

    resolver.setLocalRepositoryLocation(new File(session.getLocalRepository().getBasedir()));

    resolver.setEnvironments(getEnvironments(configuration));

    for (ReactorProject otherProject : reactorProjects) {
        if (getLogger().isDebugEnabled()) {
            getLogger().debug("P2resolver.addMavenProject " + otherProject.getId());
        }
        projects.put(otherProject.getBasedir(), otherProject);
        resolver.addReactorArtifact(new ReactorArtifactFacade(otherProject, null));

        Map<String, Set<Object>> dependencyMetadata = otherProject.getDependencyMetadata();
        if (dependencyMetadata != null) {
            for (String classifier : dependencyMetadata.keySet()) {
                resolver.addReactorArtifact(new ReactorArtifactFacade(otherProject, classifier));
            }
        }
    }

    if (dependencies != null) {
        for (Dependency dependency : dependencies) {
            resolver.addDependency(dependency.getType(), dependency.getArtifactId(), dependency.getVersion());
        }
    }

    if (TargetPlatformConfiguration.POM_DEPENDENCIES_CONSIDER.equals(configuration.getPomDependencies())) {
        Set<String> projectIds = new HashSet<String>();
        for (ReactorProject p : reactorProjects) {
            String key = ArtifactUtils.key(p.getGroupId(), p.getArtifactId(), p.getVersion());
            projectIds.add(key);
        }

        ArrayList<String> scopes = new ArrayList<String>();
        scopes.add(Artifact.SCOPE_COMPILE);
        Collection<Artifact> artifacts;
        try {
            artifacts = projectDependenciesResolver.resolve(project, scopes, session);
        } catch (MultipleArtifactsNotFoundException e) {
            Collection<Artifact> missing = new HashSet<Artifact>(e.getMissingArtifacts());

            for (Iterator<Artifact> it = missing.iterator(); it.hasNext();) {
                Artifact a = it.next();
                String key = ArtifactUtils.key(a.getGroupId(), a.getArtifactId(), a.getBaseVersion());
                if (projectIds.contains(key)) {
                    it.remove();
                }
            }

            if (!missing.isEmpty()) {
                throw new RuntimeException("Could not resolve project dependencies", e);
            }

            artifacts = e.getResolvedArtifacts();
            artifacts.removeAll(e.getMissingArtifacts());
        } catch (AbstractArtifactResolutionException e) {
            throw new RuntimeException("Could not resolve project dependencies", e);
        }
        List<Artifact> externalArtifacts = new ArrayList<Artifact>(artifacts.size());
        for (Artifact artifact : artifacts) {
            String key = ArtifactUtils.key(artifact.getGroupId(), artifact.getArtifactId(),
                    artifact.getBaseVersion());
            if (projectIds.contains(key)) {
                // resolved to an older snapshot from the repo, we only want the current project in the reactor
                continue;
            }
            externalArtifacts.add(artifact);
        }
        addToP2ViewOfLocalRepository(session, externalArtifacts, project);
        for (Artifact artifact : externalArtifacts) {
            /*
             * TODO This call generates p2 metadata for the POM dependencies. If the artifact
             * has an attached p2metadata.xml, we should reuse that metadata.
             */
            /*
             * TODO The generated metadata is "depencency only" metadata. (Just by coincidence
             * this is currently full metadata.) Since this POM depencency metadata may be
             * copied into an eclipse-repository or p2-enabled RCP installation, it shall be
             * documented that the generated metadata must be full metadata.
             */
            if (getLogger().isDebugEnabled()) {
                getLogger().debug("P2resolver.addMavenArtifact " + artifact.toString());
            }
            resolver.addMavenArtifact(new ArtifactFacade(artifact));
        }
    }

    for (ArtifactRepository repository : project.getRemoteArtifactRepositories()) {
        try {
            URI uri = new URL(repository.getUrl()).toURI();

            if (repository.getLayout() instanceof P2ArtifactRepositoryLayout) {
                if (session.isOffline()) {
                    getLogger().debug("Offline mode, using local cache only for repository "
                            + repository.getId() + " (" + repository.getUrl() + ")");
                }

                try {
                    Authentication auth = repository.getAuthentication();
                    if (auth != null) {
                        resolver.setCredentials(uri, auth.getUsername(), auth.getPassword());
                    }

                    resolver.addP2Repository(uri);

                    getLogger().debug(
                            "Added p2 repository " + repository.getId() + " (" + repository.getUrl() + ")");
                } catch (Exception e) {
                    String msg = "Failed to access p2 repository " + repository.getId() + " ("
                            + repository.getUrl() + "), will try to use local cache. Reason: " + e.getMessage();
                    if (getLogger().isDebugEnabled()) {
                        getLogger().warn(msg, e);
                    } else {
                        getLogger().warn(msg);
                    }
                }
            } else {
                if (!configuration.isIgnoreTychoRepositories() && !session.isOffline()) {
                    try {
                        MavenRepositoryReader reader = plexus.lookup(MavenRepositoryReader.class);
                        reader.setArtifactRepository(repository);
                        reader.setLocalRepository(session.getLocalRepository());

                        String repositoryKey = getRepositoryKey(repository);
                        TychoRepositoryIndex index = repositoryCache.getRepositoryIndex(repositoryKey);
                        if (index == null) {
                            index = new DefaultTychoRepositoryIndex(reader);

                            repositoryCache.putRepositoryIndex(repositoryKey, index);
                        }

                        resolver.addMavenRepository(uri, index, reader);
                        getLogger().debug("Added Maven repository " + repository.getId() + " ("
                                + repository.getUrl() + ")");
                    } catch (FileNotFoundException e) {
                        // it happens
                    } catch (Exception e) {
                        getLogger().debug("Unable to initialize remote Tycho repository", e);
                    }
                } else {
                    String msg = "Ignoring Maven repository " + repository.getId() + " (" + repository.getUrl()
                            + ")";
                    if (session.isOffline()) {
                        msg += " while in offline mode";
                    }
                    getLogger().debug(msg);
                }
            }
        } catch (MalformedURLException e) {
            getLogger().warn("Could not parse repository URL", e);
        } catch (URISyntaxException e) {
            getLogger().warn("Could not parse repository URL", e);
        }
    }

    Target target = configuration.getTarget();

    if (target != null) {
        Set<URI> uris = new HashSet<URI>();

        for (Target.Location location : target.getLocations()) {
            String type = location.getType();
            if (!"InstallableUnit".equalsIgnoreCase(type)) {
                getLogger().warn("Target location type: " + type + " is not supported");
                continue;
            }
            for (Target.Repository repository : location.getRepositories()) {

                try {
                    URI uri = new URI(getMirror(repository, session.getRequest().getMirrors()));
                    if (uris.add(uri)) {
                        if (session.isOffline()) {
                            getLogger().debug("Ignored repository " + uri + " while in offline mode");
                        } else {
                            String id = repository.getId();
                            if (id != null) {
                                Server server = session.getSettings().getServer(id);

                                if (server != null) {
                                    resolver.setCredentials(uri, server.getUsername(), server.getPassword());
                                } else {
                                    getLogger().info("Unknown server id=" + id + " for repository location="
                                            + repository.getLocation());
                                }
                            }

                            try {
                                resolver.addP2Repository(uri);
                            } catch (Exception e) {
                                String msg = "Failed to access p2 repository " + uri
                                        + ", will try to use local cache. Reason: " + e.getMessage();
                                if (getLogger().isDebugEnabled()) {
                                    getLogger().warn(msg, e);
                                } else {
                                    getLogger().warn(msg);
                                }
                            }
                        }
                    }
                } catch (URISyntaxException e) {
                    getLogger().debug("Could not parse repository URL", e);
                }
            }

            for (Target.Unit unit : location.getUnits()) {
                String versionRange;
                if ("0.0.0".equals(unit.getVersion())) {
                    versionRange = unit.getVersion();
                } else {
                    // perfect version match
                    versionRange = "[" + unit.getVersion() + "," + unit.getVersion() + "]";
                }
                resolver.addDependency(P2Resolver.TYPE_INSTALLABLE_UNIT, unit.getId(), versionRange);
            }
        }
    }

    if (!isAllowConflictingDependencies(project, configuration)) {
        List<P2ResolutionResult> results = resolver.resolveProject(project.getBasedir());

        MultiEnvironmentTargetPlatform multiPlatform = new MultiEnvironmentTargetPlatform();

        // FIXME this is just wrong
        for (int i = 0; i < configuration.getEnvironments().size(); i++) {
            TargetEnvironment environment = configuration.getEnvironments().get(i);
            P2ResolutionResult result = results.get(i);

            DefaultTargetPlatform platform = newDefaultTargetPlatform(session, projects, result);

            // addProjects( session, platform );

            multiPlatform.addPlatform(environment, platform);
        }

        return multiPlatform;
    } else {
        P2ResolutionResult result = resolver.collectProjectDependencies(project.getBasedir());

        return newDefaultTargetPlatform(session, projects, result);
    }
}

From source file:org.eclipse.tycho.p2.facade.RepositoryReferenceTool.java

License:Open Source License

/**
 * Returns the list of visible p2 repositories for the build of the current module. The list
 * includes the p2 repositories of the referenced reactor modules, the target platform, and
 * optionally the current module itself. The repositories are sorted in a reasonable order of
 * precedence, so if there should be duplicate installable units or artifacts, the hope is that
 * it is deterministic from which repository the unit or artifact is taken. The order is:
 * <ol>/* w  ww .j  av  a2 s. c  om*/
 * <li>The publisher results of the current module (only if the flag
 * {@link #REPOSITORIES_INCLUDE_CURRENT_MODULE} is set),
 * <li>The results of the referenced reactor modules,
 * <li>The non-reactor content of the module's target platform.
 * </ol>
 * 
 * @param module
 *            The current Maven project
 * @param session
 *            The current Maven session
 * @param flags
 *            Options flags; supported flags are {@link #REPOSITORIES_INCLUDE_CURRENT_MODULE}
 * @return a {@link RepositoryReferences} instance with the repositories.
 * @throws MojoExecutionException
 *             in case of internal errors
 * @throws MojoFailureException
 *             in case required artifacts are missing
 */
public RepositoryReferences getVisibleRepositories(MavenProject module, MavenSession session, int flags)
        throws MojoExecutionException, MojoFailureException {
    RepositoryReferences repositories = new RepositoryReferences();

    if ((flags & REPOSITORIES_INCLUDE_CURRENT_MODULE) != 0) {
        File publisherResults = new File(module.getBuild().getDirectory(), PUBLISHER_REPOSITORY_PATH);
        repositories.addMetadataRepository(publisherResults);
        repositories.addArtifactRepository(publisherResults);
    }

    repositories
            .addArtifactRepository(RepositoryBlackboardKey.forResolutionContextArtifacts(module.getBasedir()));

    // metadata and artifacts of target platform
    addTargetPlatformRepository(repositories, session, module);
    repositories.addArtifactRepository(new File(session.getLocalRepository().getBasedir()));
    return repositories;
}

From source file:org.eclipse.tycho.p2.resolver.P2DependencyResolver.java

License:Open Source License

protected Map<String, IDependencyMetadata> getDependencyMetadata(final MavenSession session,
        final MavenProject project, final List<TargetEnvironment> environments,
        final OptionalResolutionAction optionalAction) {

    final Map<String, IDependencyMetadata> metadata = new LinkedHashMap<String, IDependencyMetadata>();
    metadata.put(null, generator.generateMetadata(new AttachedArtifact(project, project.getBasedir(), null),
            environments, optionalAction));

    // let external providers contribute additional metadata
    try {//from  w ww .j a v  a 2s  .  c  o m
        pluginRealmHelper.execute(session, project, new Runnable() {
            @Override
            public void run() {
                try {
                    for (P2MetadataProvider provider : plexus.lookupList(P2MetadataProvider.class)) {
                        Map<String, IDependencyMetadata> providedMetadata = provider
                                .getDependencyMetadata(session, project, null, optionalAction);
                        if (providedMetadata != null) {
                            metadata.putAll(providedMetadata);
                        }
                    }
                } catch (ComponentLookupException e) {
                    // have not found anything
                }
            }
        }, new PluginFilter() {
            @Override
            public boolean accept(PluginDescriptor descriptor) {
                return isTychoP2Plugin(descriptor);
            }
        });
    } catch (MavenExecutionException e) {
        throw new RuntimeException(e);
    }

    return metadata;
}

From source file:org.eclipse.tycho.p2.resolver.P2DependencyResolver.java

License:Open Source License

@Override
public TargetPlatform computePreliminaryTargetPlatform(MavenSession session, MavenProject project,
        List<ReactorProject> reactorProjects) {
    TargetPlatformConfiguration configuration = TychoProjectUtils.getTargetPlatformConfiguration(project);
    ExecutionEnvironmentConfiguration ee = TychoProjectUtils.getExecutionEnvironmentConfiguration(project);

    TargetPlatformConfigurationStub tpConfiguration = new TargetPlatformConfigurationStub();
    tpConfiguration.setIncludePackedArtifacts(configuration.isIncludePackedArtifacts());

    PomDependencyCollector pomDependencies = null;
    if (TargetPlatformConfiguration.POM_DEPENDENCIES_CONSIDER.equals(configuration.getPomDependencies())) {
        pomDependencies = collectPomDependencies(project, reactorProjects, session);
    } else {/*from  www  .j a va 2s . com*/
        // TODO 412416 remove this when the setProjectLocation is no longer needed
        pomDependencies = resolverFactory.newPomDependencyCollector();
        pomDependencies.setProjectLocation(project.getBasedir());
    }

    for (ArtifactRepository repository : project.getRemoteArtifactRepositories()) {
        addEntireP2RepositoryToTargetPlatform(repository, tpConfiguration);
    }

    tpConfiguration.setEnvironments(configuration.getEnvironments());
    for (File file : configuration.getTargets()) {
        addTargetFileContentToTargetPlatform(file, configuration.getTargetDefinitionIncludeSourceMode(),
                tpConfiguration);
    }

    tpConfiguration.addFilters(configuration.getFilters());

    return reactorRepositoryManager.computePreliminaryTargetPlatform(DefaultReactorProject.adapt(project),
            tpConfiguration, ee, reactorProjects, pomDependencies);
}

From source file:org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.java

License:Open Source License

protected Map<String, IDependencyMetadata> getDependencyMetadata(final MavenSession session,
        final MavenProject project, final List<Map<String, String>> environments,
        final OptionalResolutionAction optionalAction) {

    final Map<String, IDependencyMetadata> metadata = new LinkedHashMap<String, IDependencyMetadata>();
    metadata.put(null, generator.generateMetadata(new AttachedArtifact(project, project.getBasedir(), null),
            environments, optionalAction));

    // let external providers contribute additional metadata
    try {/*from   w w w. j  ava 2s  .c o m*/
        pluginRealmHelper.execute(session, project, new Runnable() {
            public void run() {
                try {
                    for (P2MetadataProvider provider : plexus.lookupList(P2MetadataProvider.class)) {
                        Map<String, IDependencyMetadata> providedMetadata = provider
                                .getDependencyMetadata(session, project, null, optionalAction);
                        if (providedMetadata != null) {
                            metadata.putAll(providedMetadata);
                        }
                    }
                } catch (ComponentLookupException e) {
                    // have not found anything
                }
            }
        }, new PluginFilter() {
            public boolean accept(PluginDescriptor descriptor) {
                return isTychoP2Plugin(descriptor);
            }
        });
    } catch (MavenExecutionException e) {
        throw new RuntimeException(e);
    }

    return metadata;
}

From source file:org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.java

License:Open Source License

public TargetPlatform computeTargetPlatform(MavenSession session, MavenProject project,
        List<ReactorProject> reactorProjects) {
    TargetPlatformConfiguration configuration = TychoProjectUtils.getTargetPlatformConfiguration(project);

    ExecutionEnvironment ee = projectTypes.get(project.getPackaging()).getExecutionEnvironment(project);

    TargetPlatformBuilder tpBuilder = resolverFactory.createTargetPlatformBuilder(//
            ee != null ? ee.getProfileName() : null, configuration.isDisableP2Mirrors());
    tpBuilder.setProjectLocation(project.getBasedir());

    addThisReactorProjectToTargetPlatform(session, project, configuration, tpBuilder);

    addOtherReactorProjectsToTargetPlatform(project, reactorProjects, tpBuilder);

    if (TargetPlatformConfiguration.POM_DEPENDENCIES_CONSIDER.equals(configuration.getPomDependencies())) {
        addPomDependenciesToTargetPlatform(project, tpBuilder, reactorProjects, session);
    }//  www.  j a v  a  2  s .com

    for (ArtifactRepository repository : project.getRemoteArtifactRepositories()) {
        addEntireP2RepositoryToTargetPlatform(repository, tpBuilder, session);
    }

    if (configuration.getTarget() != null) {
        addTargetFileContentToTargetPlatform(configuration, tpBuilder, session);
    }

    tpBuilder.addFilters(configuration.getFilters());

    return tpBuilder.buildTargetPlatform();
}

From source file:org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.java

License:Open Source License

protected DependencyArtifacts doResolvePlatform(final MavenSession session, final MavenProject project,
        List<ReactorProject> reactorProjects, DependencyResolverConfiguration resolverConfiguration,
        TargetPlatform resolutionContext, P2Resolver resolver, TargetPlatformConfiguration configuration) {

    Map<File, ReactorProject> projects = new HashMap<File, ReactorProject>();

    resolver.setEnvironments(getEnvironments(configuration));

    for (ReactorProject otherProject : reactorProjects) {
        projects.put(otherProject.getBasedir(), otherProject);
    }/* w  ww.j ava 2 s . c  o m*/

    if (resolverConfiguration != null) {
        for (Dependency dependency : resolverConfiguration.getExtraRequirements()) {
            resolver.addDependency(dependency.getType(), dependency.getArtifactId(), dependency.getVersion());
        }
    }

    if (!isAllowConflictingDependencies(project, configuration)) {
        List<P2ResolutionResult> results = resolver.resolveProject(resolutionContext, project.getBasedir());

        MultiEnvironmentTargetPlatform multiPlatform = new MultiEnvironmentTargetPlatform(
                DefaultReactorProject.adapt(project));

        // FIXME this is just wrong
        for (int i = 0; i < configuration.getEnvironments().size(); i++) {
            TargetEnvironment environment = configuration.getEnvironments().get(i);
            P2ResolutionResult result = results.get(i);

            DefaultTargetPlatform platform = newDefaultTargetPlatform(session,
                    DefaultReactorProject.adapt(project), projects, result);

            // addProjects( session, platform );

            multiPlatform.addPlatform(environment, platform);
        }

        return multiPlatform;
    } else {
        P2ResolutionResult result = resolver.collectProjectDependencies(resolutionContext,
                project.getBasedir());

        return newDefaultTargetPlatform(session, DefaultReactorProject.adapt(project), projects, result);
    }
}

From source file:org.eclipse.tycho.packaging.IncludeValidationHelper.java

License:Open Source License

private void checkIncludesExist(String buildPropertiesKey, List<String> includePatterns, MavenProject project,
        boolean strict, String... ignoredIncludes) throws MojoExecutionException {
    File baseDir = project.getBasedir();
    List<String> nonMatchingIncludes = new ArrayList<String>();
    List<String> ignoreList = Arrays.asList(ignoredIncludes);
    for (String includePattern : includePatterns) {
        if (ignoreList.contains(includePattern)) {
            continue;
        }//from  w  w w.  j  a  v  a 2  s .c o  m
        if (new File(baseDir, includePattern).exists()) {
            continue;
        }
        // it does not exist as a file nor dir. Try if it matches any files as ant pattern 
        DirectoryScanner scanner = new DirectoryScanner();
        scanner.setIncludes(new String[] { includePattern });
        scanner.setBasedir(baseDir);
        scanner.scan();
        if (scanner.getIncludedFiles().length == 0) {
            nonMatchingIncludes.add(includePattern);
        }
    }
    if (nonMatchingIncludes.size() > 0) {
        String message = new File(baseDir, "build.properties").getAbsolutePath() + ": " + buildPropertiesKey
                + " value(s) " + nonMatchingIncludes + " do not match any files.";
        if (strict) {
            throw new MojoExecutionException(message);
        } else {
            log.warn(message);
        }
    }
}

From source file:org.eclipse.tycho.source.OsgiSourceMojo.java

License:Open Source License

protected static List<String> getSources(MavenProject p, boolean requireSourceRoots,
        BuildPropertiesParser buildPropertiesParser) throws MojoExecutionException {
    List<String> sources = new ArrayList<String>();
    for (List<String> sourceFolderList : buildPropertiesParser.parse(p.getBasedir()).getJarToSourceFolderMap()
            .values()) {/* w w  w .j  a  va2 s . c o m*/
        for (String sourceFolder : sourceFolderList) {
            sources.add(new File(p.getBasedir(), sourceFolder).getAbsolutePath());
        }
    }
    if (requireSourceRoots && sources.isEmpty()) {
        throw new MojoExecutionException("no source folders found in build.properties");
    }
    return sources;
}

From source file:org.eclipse.tycho.source.OsgiSourceMojo.java

License:Open Source License

/** {@inheritDoc} */
protected List<Resource> getResources(MavenProject p) throws MojoExecutionException {
    if (excludeResources) {
        return Collections.emptyList();
    }// w  ww  .  ja v a 2s.c  om
    BuildProperties buildProperties = buildPropertiesParser.parse(p.getBasedir());
    List<String> srcIncludesList = buildProperties.getSourceIncludes();
    if (srcIncludesList.isEmpty()) {
        return Collections.emptyList();
    }
    includeValidationHelper.checkSourceIncludesExist(p, buildProperties, strictSrcIncludes);
    Resource resource = new Resource();
    resource.setDirectory(project.getBasedir().getAbsolutePath());
    resource.setExcludes(buildProperties.getSourceExcludes());
    resource.setIncludes(srcIncludesList);
    return Collections.singletonList(resource);
}