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

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

Introduction

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

Prototype

public Artifact getArtifact() 

Source Link

Usage

From source file:org.renjin.gcc.maven.GccBridgeHelper.java

License:Open Source License

public static void archiveHeaders(Log log, MavenProject project, File... includeDirectories)
        throws MojoExecutionException {

    File outputDir = new File(project.getBuild().getDirectory());
    File archiveFile = new File(outputDir, project.getBuild().getFinalName() + "-headers.jar");

    ensureDirExists(outputDir);// w ww.  java2  s . c o  m

    try (JarOutputStream output = new JarOutputStream(new FileOutputStream(archiveFile))) {
        for (File includeDirectory : includeDirectories) {
            if (includeDirectory.exists()) {
                log.info("Archiving headers from " + includeDirectory.getAbsolutePath());
                archiveFiles(output, includeDirectory, "");
            }
        }
    } catch (IOException e) {
        throw new MojoExecutionException("Failed to create headers archive", e);
    }

    Artifact artifact = new AttachedArtifact(project.getArtifact(), "jar", "headers",
            new HeaderArtifactHandler());
    artifact.setFile(archiveFile);
    artifact.setResolved(true);

    project.addAttachedArtifact(artifact);
}

From source file:org.revapi.maven.AbstractVersionModifyingMojo.java

License:Apache License

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
    if (skip) {/*  ww  w .  j  a v  a 2s  . com*/
        return;
    }
    AnalysisResults analysisResults;

    if (!initializeComparisonArtifacts()) {
        //we've got non-file artifacts, for which there is no reason to run analysis
        DefaultArtifact oldArtifact = new DefaultArtifact(oldArtifacts[0]);
        analysisResults = new AnalysisResults(ApiChangeLevel.NO_CHANGE, oldArtifact.getVersion());
    } else {
        analysisResults = analyzeProject(project);
    }

    if (analysisResults == null) {
        return;
    }

    ApiChangeLevel changeLevel = analysisResults.apiChangeLevel;

    if (singleVersionForAllModules) {
        File changesFile = getChangesFile();

        try (PrintWriter out = new PrintWriter(new FileOutputStream(changesFile, true))) {
            out.println(
                    project.getArtifact().toString() + "=" + changeLevel + "," + analysisResults.baseVersion);
        } catch (IOException e) {
            throw new MojoExecutionException("Failure while updating the changes tracking file.", e);
        }
    } else {
        Version v = nextVersion(analysisResults.baseVersion, changeLevel);
        updateProjectVersion(project, v);
    }

    if (singleVersionForAllModules
            && project.equals(mavenSession.getProjects().get(mavenSession.getProjects().size() - 1))) {

        try (BufferedReader rdr = new BufferedReader(new FileReader(getChangesFile()))) {

            Map<String, AnalysisResults> projectChanges = new HashMap<>();

            String line;
            while ((line = rdr.readLine()) != null) {
                int equalsIdx = line.indexOf('=');
                String projectGav = line.substring(0, equalsIdx);
                String changeAndBaseVersion = line.substring(equalsIdx + 1);
                int commaIdx = changeAndBaseVersion.indexOf(',');
                String change = changeAndBaseVersion.substring(0, commaIdx);

                String baseVersion = changeAndBaseVersion.substring(commaIdx + 1);
                changeLevel = ApiChangeLevel.valueOf(change);

                projectChanges.put(projectGav, new AnalysisResults(changeLevel, baseVersion));
            }

            //establish the tree hierarchy of the projects
            Set<MavenProject> roots = new HashSet<>();
            Map<MavenProject, Set<MavenProject>> children = new HashMap<>();
            Deque<MavenProject> unprocessed = new ArrayDeque<>(mavenSession.getProjects());

            while (!unprocessed.isEmpty()) {
                MavenProject pr = unprocessed.pop();
                if (!projectChanges.containsKey(pr.getArtifact().toString())) {
                    continue;
                }
                MavenProject pa = pr.getParent();
                if (roots.contains(pa)) {
                    roots.remove(pr);
                    AnalysisResults paR = projectChanges.get(pa.getArtifact().toString());
                    AnalysisResults prR = projectChanges.get(pr.getArtifact().toString());
                    if (prR.apiChangeLevel.ordinal() > paR.apiChangeLevel.ordinal()) {
                        paR.apiChangeLevel = prR.apiChangeLevel;
                    }
                    children.get(pa).add(pr);
                } else {
                    roots.add(pr);
                }

                children.put(pr, new HashSet<MavenProject>());
            }

            Iterator<MavenProject> it = roots.iterator();
            while (it.hasNext()) {
                Deque<MavenProject> tree = new ArrayDeque<>();
                MavenProject p = it.next();
                tree.add(p);
                it.remove();

                AnalysisResults results = projectChanges.get(p.getArtifact().toString());
                Version v = nextVersion(results.baseVersion, results.apiChangeLevel);

                while (!tree.isEmpty()) {
                    MavenProject current = tree.pop();
                    updateProjectVersion(current, v);
                    Set<MavenProject> c = children.get(current);
                    if (c != null) {
                        for (MavenProject cp : c) {
                            updateProjectParentVersion(cp, v);
                        }
                        tree.addAll(c);
                    }
                }
            }
        } catch (IOException e) {
            throw new MojoExecutionException("Failure while reading the changes tracking file.", e);
        }
    }
}

From source file:org.revapi.maven.Analyzer.java

License:Apache License

public static String getProjectArtifactCoordinates(MavenProject project, RepositorySystemSession session,
        String versionOverride) {

    org.apache.maven.artifact.Artifact artifact = project.getArtifact();

    String extension = session.getArtifactTypeRegistry().get(artifact.getType()).getExtension();

    String version = versionOverride == null ? project.getVersion() : versionOverride;

    if (artifact.hasClassifier()) {
        return project.getGroupId() + ":" + project.getArtifactId() + ":" + extension + ":"
                + artifact.getClassifier() + ":" + version;
    } else {/*from  w w  w .  j  a v a2s.c  o  m*/
        return project.getGroupId() + ":" + project.getArtifactId() + ":" + extension + ":" + version;
    }
}

From source file:org.revapi.maven.ReportAggregateMojo.java

License:Apache License

private ProjectVersions getRunConfig(MavenProject project) {
    ProjectVersions ret = new ProjectVersions();
    Plugin revapiPlugin = findRevapi(project);
    if (revapiPlugin == null) {
        return ret;
    }//from   w ww .  j  a  v a 2s .c o m

    Xpp3Dom pluginConfig = (Xpp3Dom) revapiPlugin.getConfiguration();

    String[] oldArtifacts = getArtifacts(pluginConfig, "oldArtifacts");
    String[] newArtifacts = getArtifacts(pluginConfig, "newArtifacts");
    String oldVersion = getValueOfChild(pluginConfig, "oldVersion");
    if (oldVersion == null) {
        oldVersion = System.getProperties().getProperty(Props.oldVersion.NAME, Props.oldVersion.DEFAULT_VALUE);
    }
    String newVersion = getValueOfChild(pluginConfig, "newVersion");
    if (newVersion == null) {
        newVersion = System.getProperties().getProperty(Props.newVersion.NAME, project.getVersion());
    }

    String defaultOldArtifact = Analyzer.getProjectArtifactCoordinates(project, oldVersion);
    String defaultNewArtifact = Analyzer.getProjectArtifactCoordinates(project, newVersion);

    if (oldArtifacts == null || oldArtifacts.length == 0) {
        if (!project.getArtifact().getArtifactHandler().isAddedToClasspath()) {
            return ret;
        }
        oldArtifacts = new String[] { defaultOldArtifact };
    }
    if (newArtifacts == null || newArtifacts.length == 0) {
        if (!project.getArtifact().getArtifactHandler().isAddedToClasspath()) {
            return ret;
        }
        newArtifacts = new String[] { defaultNewArtifact };
    }
    String versionRegexString = getValueOfChild(pluginConfig, "versionFormat");
    Pattern versionRegex = versionRegexString == null ? null : Pattern.compile(versionRegexString);

    DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(repositorySystemSession);
    session.setDependencySelector(new ScopeDependencySelector("compile", "provided"));
    session.setDependencyTraverser(new ScopeDependencyTraverser("compile", "provided"));

    if (alwaysCheckForReleaseVersion) {
        session.setUpdatePolicy(RepositoryPolicy.UPDATE_POLICY_ALWAYS);
    }

    ArtifactResolver resolver = new ArtifactResolver(repositorySystem, session,
            mavenSession.getCurrentProject().getRemoteProjectRepositories());

    Function<String, Artifact> resolve = gav -> {
        try {
            return Analyzer.resolveConstrained(project, gav, versionRegex, resolver);
        } catch (VersionRangeResolutionException | ArtifactResolutionException e) {
            getLog().warn("Could not resolve artifact '" + gav + "' with message: " + e.getMessage());
            return null;
        }
    };

    ret.oldGavs = Stream.of(oldArtifacts).map(resolve).filter(f -> f != null).toArray(Artifact[]::new);
    ret.newGavs = Stream.of(newArtifacts).map(resolve).filter(f -> f != null).toArray(Artifact[]::new);

    return ret;
}

From source file:org.scoverage.plugin.SCoverageForkedLifecycleConfigurator.java

License:Apache License

/**
 * Configures project and dependent modules in multi-module project when entering forked {@code scoverage}
 * life cycle.//  w w w  .ja  va 2 s  .c om
 * 
 * @param project Maven project in {@code scoverage} forked life cycle.
 * @param reactorProjects all reactor Maven projects.
 * @param additionalProjectPropertiesMap additional project properties to set.
 */
public static void afterForkedLifecycleEnter(MavenProject project, List<MavenProject> reactorProjects,
        Map<String, String> additionalProjectPropertiesMap) {
    File classesDirectory = new File(project.getBuild().getOutputDirectory());
    File scoverageClassesDirectory = new File(classesDirectory.getParentFile(),
            "scoverage-" + classesDirectory.getName());

    project.getArtifact().setFile(null);
    project.getBuild().setOutputDirectory(scoverageClassesDirectory.getAbsolutePath());

    if (additionalProjectPropertiesMap != null) {
        for (Map.Entry<String, String> entry : additionalProjectPropertiesMap.entrySet()) {
            project.getProperties().put(entry.getKey(), entry.getValue());
        }
    }

    for (MavenProject reactorProject : reactorProjects) {
        if (reactorProject != project) {
            if (reactorProject.getProperties().containsKey(PROP_FORKED_OUTPUT_DIRECTORY)) {
                String forkedOutputDirectory = (String) reactorProject.getProperties()
                        .remove/* get */(PROP_FORKED_OUTPUT_DIRECTORY);
                reactorProject.getProperties().put(PROP_ORIG_OUTPUT_DIRECTORY,
                        reactorProject.getBuild().getOutputDirectory());
                reactorProject.getBuild().setOutputDirectory(forkedOutputDirectory);
            }

            if (reactorProject.getProperties().containsKey(PROP_FORKED_ARTIFACT_FILE)) {
                String forkedArtifactFilePath = (String) reactorProject.getProperties()
                        .remove/* get */(PROP_FORKED_ARTIFACT_FILE);
                File originalArtifactFile = reactorProject.getArtifact().getFile();
                reactorProject.getProperties().put(PROP_ORIG_ARTIFACT_FILE,
                        originalArtifactFile == null ? "" : originalArtifactFile.getAbsolutePath());
                reactorProject.getArtifact()
                        .setFile("".equals(forkedArtifactFilePath) ? null : new File(forkedArtifactFilePath));
            }
        }
    }
}

From source file:org.scoverage.plugin.SCoverageForkedLifecycleConfigurator.java

License:Apache License

/**
 * Restores original configuration after leaving forked {@code scoverage} life cycle.
 * <br>//  www  . j  av  a 2 s  .  c o m
 * {@code project} is a project in default life cycle, {@code project.getExecutionProject()}
 * is a project in just finished forked {@code scoverage} life cycle.
 * 
 * @param project Maven project in default life cycle.
 * @param reactorProjects all reactor Maven projects.
 */
public static void afterForkedLifecycleExit(MavenProject project, List<MavenProject> reactorProjects) {
    String forkedOutputDirectory = project.getExecutionProject().getBuild().getOutputDirectory();
    project.getProperties().put(PROP_FORKED_OUTPUT_DIRECTORY, forkedOutputDirectory);

    File forkedArtifactFile = project.getExecutionProject().getArtifact().getFile();
    project.getProperties().put(PROP_FORKED_ARTIFACT_FILE,
            forkedArtifactFile != null ? forkedArtifactFile.getAbsolutePath() : "");

    // Restore changed outputDirectory and artifact.file in other reactor projects
    for (MavenProject reactorProject : reactorProjects) {
        if (reactorProject != project) {
            if (reactorProject.getProperties().containsKey(PROP_ORIG_OUTPUT_DIRECTORY)) {
                String originalOutputDirectory = (String) reactorProject.getProperties()
                        .remove(PROP_ORIG_OUTPUT_DIRECTORY);
                forkedOutputDirectory = reactorProject.getBuild().getOutputDirectory();

                reactorProject.getProperties().put(PROP_FORKED_OUTPUT_DIRECTORY, forkedOutputDirectory);
                reactorProject.getBuild().setOutputDirectory(originalOutputDirectory);
            }

            if (reactorProject.getProperties().containsKey(PROP_ORIG_ARTIFACT_FILE)) {
                String originalArtifactFilePath = (String) reactorProject.getProperties()
                        .remove/* get */(PROP_ORIG_ARTIFACT_FILE);
                forkedArtifactFile = reactorProject.getArtifact().getFile();

                reactorProject.getProperties().put(PROP_FORKED_ARTIFACT_FILE,
                        forkedArtifactFile == null ? "" : forkedArtifactFile.getAbsolutePath());
                reactorProject.getArtifact().setFile(
                        "".equals(originalArtifactFilePath) ? null : new File(originalArtifactFilePath));
            }
        }
    }
}

From source file:org.seasar.kvasir.plust.KvasirPlugin.java

void buildTestEnvironment(IProject project, String groupId, String artifactId, String version,
        IProgressMonitor monitor) throws CoreException {
    monitor.beginTask("Preparing test environment", 80);
    try {/*from   w  w  w .j a  v  a2  s . c om*/
        MavenProject mavenProject = plugin.getMavenProject(project.getFile(IKvasirProject.POM_FILE_NAME),
                monitor);
        monitor.worked(10);
        Artifact distArchive = (Artifact) plugin.executeInEmbedder(
                new PrepareTestEnvironmentTask(mavenProject, groupId, artifactId, version), monitor);
        monitor.worked(10);
        if (distArchive == null) {
            plugin.getConsole().logError("Can't resolve archive: " + distArchive);
            throw new CoreException(KvasirPlugin.constructStatus("Can't resolve archive: " + distArchive));
        }

        ZipFile zipFile = null;
        File file = null;
        try {
            zipFile = new ZipFile(distArchive.getFile());
            ZipEntry entry = zipFile
                    .getEntry(distArchive.getArtifactId() + "-" + distArchive.getVersion() + "/kvasir.war");
            if (entry == null) {
                throw new CoreException(KvasirPlugin.constructStatus(
                        "Can't find kvasir.war in " + distArchive.getFile().getAbsolutePath()));
            }

            file = File.createTempFile("kvasir", ".tmp");
            file.deleteOnExit();
            copyZipEntryAsFile(zipFile, entry, file);

            IFolder webapp = project.getFolder(IKvasirProject.WEBAPP_PATH);
            unzip(file, webapp, true, monitor);
            monitor.worked(50);
            webapp.setDerived(true);
            monitor.worked(10);
        } catch (ZipException ex) {
            throw new CoreException(KvasirPlugin.constructStatus(ex));
        } catch (IOException ex) {
            throw new CoreException(KvasirPlugin.constructStatus(ex));
        } finally {
            if (zipFile != null) {
                try {
                    zipFile.close();
                } catch (IOException ex) {
                    plugin.log(ex);
                }
                zipFile = null;
            }
            if (file != null) {
                file.delete();
            }
        }

        // ??distribution????????
        // ??????????
        String targetPluginDirectoryName = mavenProject.getArtifactId() + "-"
                + mavenProject.getArtifact().getVersion();
        IFolder targetPluginDirectory = project
                .getFolder(IKvasirProject.TEST_PLUGINS_PATH + "/" + targetPluginDirectoryName);
        if (targetPluginDirectory.exists()) {
            targetPluginDirectory.delete(false, new SubProgressMonitor(monitor, 1));
        }
    } finally {
        monitor.done();
    }
}

From source file:org.semver.enforcer.AbstractEnforcerRule.java

License:Apache License

@Override
public void execute(final EnforcerRuleHelper helper) throws EnforcerRuleException {
    final MavenProject project = getMavenProject(helper);
    if (shouldSkipRuleExecution(project)) {
        helper.getLog().debug("Skipping non " + AbstractEnforcerRule.JAR_ARTIFACT_TYPE + " or "
                + BUNDLE_ARTIFACT_TYPE + " artifact.");
        return;/*from w  w w .  j  ava  2s . c om*/
    }

    final Artifact previousArtifact;
    final Artifact currentArtifact = validateArtifact(project.getArtifact());
    final Version current = Version.parse(currentArtifact.getVersion());
    try {
        final ArtifactRepository localRepository = (ArtifactRepository) helper.evaluate("${localRepository}");
        final String version;

        if (this.previousVersion != null) {
            version = this.previousVersion;
            helper.getLog().info("Version specified as <" + version + ">");
        } else {
            final ArtifactMetadataSource artifactMetadataSource = (ArtifactMetadataSource) helper
                    .getComponent(ArtifactMetadataSource.class);
            final List<ArtifactVersion> availableVersions = getAvailableReleasedVersions(artifactMetadataSource,
                    project, localRepository);
            final List<ArtifactVersion> availablePreviousVersions = filterNonPreviousVersions(availableVersions,
                    current);
            if (availablePreviousVersions.isEmpty()) {
                helper.getLog()
                        .warn("No previously released version. Backward compatibility check not performed.");
                return;
            }
            version = availablePreviousVersions.iterator().next().toString();
            helper.getLog().info("Version deduced as <" + version + "> (among all availables: "
                    + availablePreviousVersions + ")");
        }

        final ArtifactFactory artifactFactory = (ArtifactFactory) helper.getComponent(ArtifactFactory.class);
        previousArtifact = artifactFactory.createArtifact(project.getGroupId(), project.getArtifactId(),
                version, null, project.getArtifact().getType());
        final ArtifactResolver resolver = (ArtifactResolver) helper.getComponent(ArtifactResolver.class);
        resolver.resolve(previousArtifact, project.getRemoteArtifactRepositories(), localRepository);
        validateArtifact(previousArtifact);
    } catch (Exception e) {
        helper.getLog().warn("Exception while accessing artifacts; skipping check.", e);
        return;
    }

    final Version previous = Version.parse(previousArtifact.getVersion());
    final File previousJar = previousArtifact.getFile();
    final File currentJar = currentArtifact.getFile();
    compareJars(helper, previous, previousJar, current, currentJar);
}

From source file:org.semver.enforcer.AbstractEnforcerRule.java

License:Apache License

/**
 * @param artifactMetadataSource//from www  . j a v a  2 s.c o m
 * @param project
 * @param localRepository
 * @return all available versions from most recent to oldest
 * @throws ArtifactMetadataRetrievalException
 */
protected final List<ArtifactVersion> getAvailableReleasedVersions(
        final ArtifactMetadataSource artifactMetadataSource, final MavenProject project,
        final ArtifactRepository localRepository) throws ArtifactMetadataRetrievalException {
    final List<ArtifactVersion> availableVersions = artifactMetadataSource.retrieveAvailableVersions(
            project.getArtifact(), localRepository, project.getRemoteArtifactRepositories());
    availableVersions.remove(new DefaultArtifactVersion(project.getArtifact().getVersion()));
    for (final Iterator<ArtifactVersion> iterator = availableVersions.iterator(); iterator.hasNext();) {
        final ArtifactVersion artifactVersion = iterator.next();
        if (Version.parse(artifactVersion.toString()).isSnapshot()) {
            iterator.remove();
        }
    }
    //TODO proper sorting based on Version
    Collections.sort(availableVersions);
    Collections.reverse(availableVersions);
    return availableVersions;
}

From source file:org.semver.enforcer.AbstractEnforcerRule.java

License:Apache License

private static boolean shouldSkipRuleExecution(MavenProject project) {
    return !AbstractEnforcerRule.JAR_ARTIFACT_TYPE.equals(project.getArtifact().getType())
            && !AbstractEnforcerRule.BUNDLE_ARTIFACT_TYPE.equals(project.getArtifact().getType());
}