1 package org.openecomp.sdc.onboarding.util;
4 import java.io.IOException;
7 import java.util.regex.Matcher;
8 import java.util.regex.Pattern;
9 import org.apache.maven.artifact.repository.ArtifactRepository;
10 import org.apache.maven.execution.MavenSession;
11 import org.apache.maven.plugin.AbstractMojo;
12 import org.apache.maven.plugin.MojoExecutionException;
13 import org.apache.maven.plugin.MojoFailureException;
14 import org.apache.maven.plugins.annotations.LifecyclePhase;
15 import org.apache.maven.plugins.annotations.Mojo;
16 import org.apache.maven.plugins.annotations.Parameter;
17 import org.apache.maven.plugins.annotations.ResolutionScope;
18 import org.apache.maven.project.MavenProject;
20 @Mojo(name = "init-artifact-helper", threadSafe = true, defaultPhase = LifecyclePhase.PRE_CLEAN,
21 requiresDependencyResolution = ResolutionScope.NONE)
22 public class InitializationHelperMojo extends AbstractMojo {
24 private static final String SKIP_GET = "skipGet";
26 @Parameter(defaultValue = "${session}")
27 private MavenSession session;
28 @Parameter(defaultValue = "${project}", readonly = true)
29 private MavenProject project;
31 private String groupId;
33 private String artifactId;
35 private String version;
37 private String targetLocation;
41 private String excludePackaging;
43 private ArtifactHelper artifactHelper;
45 public void execute() throws MojoExecutionException, MojoFailureException {
46 if (System.getProperties().containsKey(SKIP_GET)) {
47 project.getProperties()
48 .setProperty(SKIP_GET, Boolean.valueOf(System.getProperties().containsKey(SKIP_GET)).toString());
51 File orgFile = new File(
52 session.getLocalRepository().getBasedir() + File.separator + (groupId.replace(".", File.separator))
53 + File.separator + artifactId + File.separator + version);
54 String resolvedVersion = getResolvedVersion(artifactHelper.getRepositories(version.contains("SNAPSHOT")));
55 project.getProperties().setProperty("resolvedVersion", resolvedVersion);
56 System.getProperties().setProperty(SKIP_GET, Boolean.TRUE.toString());
57 if (resolvedVersion.equals(version) && !orgFile.exists()) {
58 project.getProperties().setProperty(SKIP_GET, Boolean.TRUE.toString());
63 private String getResolvedVersion(List<ArtifactRepository> list) {
64 Pattern timestampPattern = Pattern.compile(".*<timestamp>(.*)</timestamp>.*");
65 Pattern buildNumberPattern = Pattern.compile(".*<buildNumber>(.*)</buildNumber>.*");
66 String timestamp = null;
67 String buildNumber = null;
68 for (ArtifactRepository repo : list) {
70 String content = artifactHelper.getContents(
71 new URL(repo.getUrl() + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version
72 + "/maven-metadata.xml"));
73 Matcher m = timestampPattern.matcher(content);
75 timestamp = m.group(1);
77 m = buildNumberPattern.matcher(content);
79 buildNumber = m.group(1);
81 } catch (IOException e) {
85 return timestamp != null && buildNumber != null ? timestamp + "-" + buildNumber : version;