diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionAggregatedPhasesDetails.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionAggregatedPhasesDetails.java new file mode 100644 index 00000000..fae62006 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionAggregatedPhasesDetails.java @@ -0,0 +1,88 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +import edu.umd.cs.findbugs.annotations.NonNull; + +import java.time.Duration; +import java.time.ZonedDateTime; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalUnit; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.concurrent.TimeUnit; + +import javax.annotation.Nonnull; + +/** + * @author Cyrille Le Clerc + */ +public class MavenExecutionAggregatedPhasesDetails implements Comparable { + @NonNull + private Set phases; + @NonNull + private SortedSet mojoExecutionDetails = new TreeSet<>(); + + public MavenExecutionAggregatedPhasesDetails(@NonNull String... phases) { + this.phases = new HashSet<>(Arrays.asList(phases)); + } + + /** + * @param mojoExecutionDetails + * @return {@code true} if given {@link MavenMojoExecutionDetails} was added to this aggregate. + */ + public boolean offer(@NonNull MavenMojoExecutionDetails mojoExecutionDetails) { + if (phases.contains(mojoExecutionDetails.getLifecyclePhase())) { + this.mojoExecutionDetails.add(mojoExecutionDetails); + return true; + } else { + return false; + } + } + + @Nonnull + public ZonedDateTime getStart() { + return mojoExecutionDetails.first().getStart(); + } + + @Nonnull + public ZonedDateTime getStop() { + return mojoExecutionDetails.last().getStop(); + } + + @Nonnull + public String getDuration() { + int durationInSecs = 0; + for (MavenMojoExecutionDetails mojoExecutionDetails:getMojoExecutionDetails()) { + durationInSecs += mojoExecutionDetails.getDurationMillis(); + } + return TimeUnit.SECONDS.convert(durationInSecs, TimeUnit.MILLISECONDS) + "s"; + } + + public Set getPhases() { + return phases; + } + + public SortedSet getMojoExecutionDetails() { + return mojoExecutionDetails; + } + + @Override + public int compareTo(MavenExecutionAggregatedPhasesDetails other) { + int comparison = this.getStart().compareTo(other.getStart()); + + if (comparison == 0) { + comparison = this.getStop().compareTo(other.getStop()); + } + return comparison; + } + + @Override + public String toString() { + return "MavenExecutionAggregatedPhasesDetails{" + + "phases=" + phases + + ", mojoExecutionDetails=" + mojoExecutionDetails + + '}'; + } +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionDetails.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionDetails.java new file mode 100644 index 00000000..4e4acea3 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionDetails.java @@ -0,0 +1,126 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +import java.io.Serializable; +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.stream.Collectors; + +import javax.annotation.Nonnull; + +/** + * @author Cyrille Le Clerc + */ +public class MavenExecutionDetails implements Comparable, Serializable { + + private static final long serialVersionUID = 1L; + + private SortedSet mavenProjectExecutionDetails = new TreeSet<>(); + + @Nonnull + private final ZonedDateTime start; + @Nonnull + private ZonedDateTime stop; + + public MavenExecutionDetails(@Nonnull ZonedDateTime start) { + this.start = start; + this.stop = stop; + } + + public SortedSet getMavenProjectExecutionDetails() { + return mavenProjectExecutionDetails; + } + + @Nonnull + public ZonedDateTime getStart() { + return start; + } + + @Nonnull + public ZonedDateTime getStop() { + return stop; + } + + public void setStop(@Nonnull ZonedDateTime stop) { + this.stop = stop; + } + + @Override + public int compareTo(MavenExecutionDetails o) { + return this.start.compareTo(o.start); + } + + /** + * it's a poor comparison but there is no risk of having 2 builds starting at the same time + * + * @param o + * @return + */ + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + MavenExecutionDetails that = (MavenExecutionDetails) o; + + return start.equals(that.start); + } + + @Override + public int hashCode() { + return start.hashCode(); + } + + public String getExecutionDurationDetails() { + List aggregates = new ArrayList(Arrays.asList( + new MavenExecutionAggregatedPhasesDetails("validate", "initialize"), + new MavenExecutionAggregatedPhasesDetails("generate-sources", "process-sources", "generate-resources", "process-resources", "compile", "process-classes"), + new MavenExecutionAggregatedPhasesDetails("generate-test-sources", "process-test-sources", "generate-test-resources", "process-test-resources", "test-compile", "process-test-classes", "test"), + new MavenExecutionAggregatedPhasesDetails("prepare-package", "package"), + new MavenExecutionAggregatedPhasesDetails("pre-integration-test", "integration-test", "post-integration-test"), + new MavenExecutionAggregatedPhasesDetails("install"), + new MavenExecutionAggregatedPhasesDetails("deploy"), + new MavenExecutionAggregatedPhasesDetails("pre-clean", "clean", "post-clean"), + new MavenExecutionAggregatedPhasesDetails("pre-site", "site", "post-site", "site-deploy") + + )); + + for (MavenProjectExecutionDetails projectExecutionDetails : + getMavenProjectExecutionDetails()) { + for (MavenMojoExecutionDetails mojoExecutionDetails : projectExecutionDetails.getMojoExecutionDetails()) { + boolean added = false; + for (MavenExecutionAggregatedPhasesDetails aggregate : aggregates) { + if (aggregate.offer(mojoExecutionDetails)) { + added = true; + break; + } + } + if (!added) { + MavenExecutionAggregatedPhasesDetails aggregate = new MavenExecutionAggregatedPhasesDetails(mojoExecutionDetails.getLifecyclePhase()); + aggregates.add(aggregate); + boolean offer = aggregate.offer(mojoExecutionDetails); + if (offer == false) { + throw new IllegalStateException("Failure to add " + mojoExecutionDetails + " to " + aggregate); + } + } + } + } + StringBuilder sb = new StringBuilder(); + + for (MavenExecutionAggregatedPhasesDetails aggregate : aggregates) { + if (aggregate.getMojoExecutionDetails().isEmpty()) { + + } else { + sb.append(" * " + aggregate.getPhases().stream().collect(Collectors.joining(", ")) + " --- " + aggregate.getDuration() + "\n"); + for (MavenMojoExecutionDetails mojoExecutionDetails : aggregate.getMojoExecutionDetails().stream().filter(m -> m.getDurationMillis() > 1000).collect(Collectors.toList())) { + sb.append(" * " + mojoExecutionDetails.getPlugin().getArtifactId() + ":" + mojoExecutionDetails.getGoal() + " (" + mojoExecutionDetails.getExecutionId() + ")" + " @ " + mojoExecutionDetails.getProject().getArtifactId() + " --- " + mojoExecutionDetails.getDuration() + "\n"); + } + } + } + + return sb.toString(); + } +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionEventType.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionEventType.java new file mode 100644 index 00000000..96100e95 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionEventType.java @@ -0,0 +1,24 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +/** + * See {@code org.apache.maven.execution.ExecutionEvent.Type} + */ +public enum MavenExecutionEventType { + ProjectDiscoveryStarted, + SessionStarted, + SessionEnded, + ProjectSkipped, + ProjectStarted, + ProjectSucceeded, + ProjectFailed, + MojoSkipped, + MojoStarted, + MojoSucceeded, + MojoFailed, + ForkStarted, + ForkSucceeded, + ForkFailed, + ForkedProjectStarted, + ForkedProjectSucceeded, + ForkedProjectFailed +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionStatus.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionStatus.java new file mode 100644 index 00000000..fa2e1d18 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenExecutionStatus.java @@ -0,0 +1,6 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +/** + * See {@code org.apache.maven.execution.BuildSuccess} and {@code org.apache.maven.execution.BuildFailure} + */ +public enum MavenExecutionStatus {Success, Failure} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenMojoExecutionDetails.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenMojoExecutionDetails.java new file mode 100644 index 00000000..61772f52 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenMojoExecutionDetails.java @@ -0,0 +1,148 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +import org.jenkinsci.plugins.pipeline.maven.MavenArtifact; + +import java.io.Serializable; +import java.time.Duration; +import java.time.ZonedDateTime; +import java.time.temporal.ChronoUnit; + +import javax.annotation.Nonnull; + +/** + * @author Cyrille Le Clerc + */ +public class MavenMojoExecutionDetails implements Comparable, Serializable { + + private static final long serialVersionUID = 1L; + + @Nonnull + private final MavenArtifact project; + @Nonnull + private final MavenArtifact plugin; + @Nonnull + private final String executionId; + @Nonnull + private final String goal; + @Nonnull + private final String lifecyclePhase; + @Nonnull + private final ZonedDateTime start; + @Nonnull + private ZonedDateTime stop; + @Nonnull + private MavenExecutionEventType type; + + public MavenMojoExecutionDetails(@Nonnull MavenArtifact project, @Nonnull MavenArtifact plugin, @Nonnull String executionId, @Nonnull String lifecyclePhase, @Nonnull String goal, @Nonnull ZonedDateTime start, @Nonnull MavenExecutionEventType type) { + this.project = project; + this.plugin = plugin; + this.executionId = executionId; + this.lifecyclePhase = lifecyclePhase; + this.goal = goal; + this.start = start; + this.stop = start; + this.type = type; + } + + /** + * See {@code org.apache.maven.execution.ExecutionEvent.Type#MojoStarted} + */ + @Nonnull + public ZonedDateTime getStart() { + return start; + } + + /** + * See {@code org.apache.maven.execution.ExecutionEvent.Type#MojoSucceeded} and {@code org.apache.maven.execution.ExecutionEvent.Type#MojoFailed} + */ + @Nonnull + public ZonedDateTime getStop() { + return stop; + } + + public void stop(@Nonnull ZonedDateTime stop, MavenExecutionEventType type) { + this.stop = stop; + this.type = type; + } + + @Nonnull + public MavenArtifact getProject() { + return project; + } + + @Nonnull + public MavenArtifact getPlugin() { + return plugin; + } + + @Nonnull + public String getExecutionId() { + return executionId; + } + + @Nonnull + public String getLifecyclePhase() { + return lifecyclePhase; + } + + @Nonnull + public String getGoal() { + return goal; + } + + @Override + public String toString() { + return "MavenMojoExecutionDetails{" + + "project=" + project.getId() + + ", plugin=" + plugin.getId() + + ", executionId='" + executionId + '\'' + + ", lifecyclePhase='" + lifecyclePhase + '\'' + + ", goal='" + goal + '\'' + + ", start=" + start + + ", stop=" + stop + + ", type=" + type + + '}'; + } + + @Override + public int compareTo(MavenMojoExecutionDetails other) { + int comparison = this.getStart().compareTo(other.getStart()); + + if (comparison == 0) { + comparison = this.getStop().compareTo(other.getStop()); + } + return comparison; + } + + @Nonnull + public String getDuration() { + return Duration.between(start, stop).getSeconds() + "s"; + } + + @Nonnull + public long getDurationMillis() { + return start.until(stop, ChronoUnit.MILLIS); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + MavenMojoExecutionDetails that = (MavenMojoExecutionDetails) o; + + if (!project.equals(that.project)) return false; + if (!plugin.equals(that.plugin)) return false; + if (!executionId.equals(that.executionId)) return false; + return goal.equals(that.goal); + } + + @Override + public int hashCode() { + int result = project.hashCode(); + result = 31 * result + plugin.hashCode(); + result = 31 * result + executionId.hashCode(); + result = 31 * result + goal.hashCode(); + return result; + } +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenProjectExecutionDetails.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenProjectExecutionDetails.java new file mode 100644 index 00000000..b0f13f71 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/MavenProjectExecutionDetails.java @@ -0,0 +1,96 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +import org.jenkinsci.plugins.pipeline.maven.MavenArtifact; + +import java.io.Serializable; +import java.time.Duration; +import java.time.ZonedDateTime; +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.annotation.Nonnull; + +/** + * @author Cyrille Le Clerc + */ +public class MavenProjectExecutionDetails implements Comparable, Serializable { + private static final long serialVersionUID = 1L; + + @Nonnull + private MavenArtifact project; + @Nonnull + private SortedSet mojoExecutionDetails = new TreeSet<>(); + + public MavenProjectExecutionDetails(@Nonnull MavenArtifact project) { + this.project = project; + } + + /** + * See {@code org.apache.maven.execution.ExecutionEvent.Type#MojoStarted} + */ + @Nonnull + public ZonedDateTime getStart() { + return mojoExecutionDetails.first().getStart(); + } + + /** + * See {@code org.apache.maven.execution.ExecutionEvent.Type#MojoSucceeded} and {@code org.apache.maven.execution.ExecutionEvent.Type#MojoFailed} + */ + @Nonnull + public ZonedDateTime getStop() { + return mojoExecutionDetails.last().getStop(); + } + + @Override + public String toString() { + return "MavenProjectExecutionDetails{" + + "artifact=" + project + + ", start=" + getStart() + + ", stop=" + getStop() + + '}'; + } + + @Override + public int compareTo(MavenProjectExecutionDetails other) { + int comparison = this.getStart().compareTo(other.getStart()); + + if (comparison == 0) { + comparison = this.getStop().compareTo(other.getStop()); + } + return comparison; + } + + @Nonnull + public MavenArtifact getProject() { + return project; + } + + @Nonnull + public SortedSet getMojoExecutionDetails() { + return mojoExecutionDetails; + } + + public void add(@Nonnull MavenMojoExecutionDetails timer) { + mojoExecutionDetails.add(timer); + } + + @Nonnull + public String getDuration() { + return Duration.between(getStart(), getStop()).getSeconds() + "s"; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + MavenProjectExecutionDetails that = (MavenProjectExecutionDetails) o; + + return project.equals(that.project); + } + + @Override + public int hashCode() { + return project.hashCode(); + } +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/ObjectFactory.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/ObjectFactory.java new file mode 100644 index 00000000..e43f0274 --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/model/ObjectFactory.java @@ -0,0 +1,133 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +import org.apache.commons.collections.map.HashedMap; +import org.jenkinsci.plugins.pipeline.maven.MavenArtifact; +import org.jenkinsci.plugins.pipeline.maven.util.XmlUtils; +import org.w3c.dom.Element; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import javax.annotation.Nonnull; + +/** + * @author Cyrille Le Clerc + */ +public class ObjectFactory { + private final transient DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.n"); + + @Nonnull + public MavenExecutionDetails analyseMavenBuildExecution(@Nonnull Element mavenSpyLogsElt) { + String startTimeAsString = mavenSpyLogsElt.getAttribute("_time"); + ZonedDateTime mavenBuildStartTime = dateTimeFormatter.parse(startTimeAsString, LocalDateTime::from).atZone(ZoneId.systemDefault()); + + MavenExecutionDetails mavenExecutionDetails = new MavenExecutionDetails(mavenBuildStartTime); + Element mavenExecutionResult = XmlUtils.getUniqueChildElement(mavenSpyLogsElt, "MavenExecutionResult"); + String stopTimeAsString = mavenExecutionResult.getAttribute("_time"); + ZonedDateTime mavenBuildStopTime = dateTimeFormatter.parse(stopTimeAsString, LocalDateTime::from).atZone(ZoneId.systemDefault()); + + List buildSummaries = XmlUtils.getChildrenElements(mavenExecutionResult,"buildSummary"); + // FIXME associate build summaries with projects + /* + + + + MavenExecutionStatus status; + + if (buildSummary == null) { + status = MavenExecutionStatus.Failure; + } else if ("org.apache.maven.execution.BuildSuccess".equals(buildSummary.getAttribute("class"))) { + status = MavenExecutionStatus.Success; + } else { + status = MavenExecutionStatus.Failure; + } + */ + + mavenExecutionDetails.setStop(mavenBuildStopTime); + + List mojoTimers = analyseMavenMojoExecutions(mavenSpyLogsElt); + Map projectTimersPerProject = new HashedMap(); + for (MavenMojoExecutionDetails mojoTimer : mojoTimers) { + projectTimersPerProject.computeIfAbsent(mojoTimer.getProject(), p -> new MavenProjectExecutionDetails(p)).add(mojoTimer); + } + + mavenExecutionDetails.getMavenProjectExecutionDetails().addAll(projectTimersPerProject.values()); + + return mavenExecutionDetails; + } + + @Nonnull + public List analyseMavenMojoExecutions(@Nonnull Element mavenSpyLogsElt) { + List executionEvents = XmlUtils.getChildrenElements(mavenSpyLogsElt, "ExecutionEvent"); + + List timers = new ArrayList<>(); + + for (Element executionEventElt : executionEvents) { + + MavenExecutionEventType type = MavenExecutionEventType.valueOf(executionEventElt.getAttribute("type")); + String timeAsString = executionEventElt.getAttribute("_time"); + ZonedDateTime mojoExecutionTime = dateTimeFormatter.parse(timeAsString, LocalDateTime::from).atZone(ZoneId.systemDefault()); + + Element projectElt = XmlUtils.getUniqueChildElementOrNull(executionEventElt, "project"); + if (projectElt == null) { + // ExecutionEvent not attached to a project. Not seen so far, just in case + continue; + } + if (!projectElt.hasAttribute("groupId") || !projectElt.hasAttribute("artifactId") || !projectElt.hasAttribute("version")) { + // ExecutionEvent not attached stop an artifact such as "ProjectDiscoveryStarted" + continue; + } + MavenArtifact project = XmlUtils.newMavenArtifact(projectElt); + + Element pluginElt = XmlUtils.getUniqueChildElementOrNull(executionEventElt, "plugin"); + if (pluginElt == null) { + // ExecutionEvent not attached to a plugin/mojo, ignore + continue; + } + if (!pluginElt.hasAttribute("groupId") || !pluginElt.hasAttribute("artifactId") || !pluginElt.hasAttribute("version")) { + // ExecutionEvent not attached to a plugin/mojo (e.g. "ProjectDiscoveryStarted"), ignore + continue; + } + + MavenArtifact plugin = XmlUtils.newMavenArtifact(pluginElt); + String executionId = pluginElt.getAttribute("executionId"); + String goal = pluginElt.getAttribute("goal"); + String lifecyclePhase = pluginElt.getAttribute("lifecyclePhase"); + + + switch (type) { + case MojoStarted: + case MojoSkipped: + MavenMojoExecutionDetails timer = new MavenMojoExecutionDetails(project, plugin, executionId, lifecyclePhase, goal, mojoExecutionTime, type); + timers.add(timer); + break; + case MojoFailed: + case MojoSucceeded: + MavenMojoExecutionDetails matchingTimer = timers.stream().filter(t -> t.getProject().equals(project) && t.getPlugin().equals(plugin) && t.getExecutionId().equals(executionId)).findFirst().get(); + if (matchingTimer == null) { + // fixme log warning + } else { + matchingTimer.stop(mojoExecutionTime, type); + } + break; + default: + // ignore other event types + } + } + Collections.sort(timers); + return timers; + } +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenBuildDetailsPublisher.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenBuildDetailsPublisher.java new file mode 100644 index 00000000..35ebe22d --- /dev/null +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenBuildDetailsPublisher.java @@ -0,0 +1,61 @@ +package org.jenkinsci.plugins.pipeline.maven.publishers; + +import hudson.Extension; +import hudson.model.TaskListener; +import org.jenkinsci.Symbol; +import org.jenkinsci.plugins.pipeline.maven.MavenPublisher; +import org.jenkinsci.plugins.workflow.steps.StepContext; +import org.w3c.dom.Element; + +import java.io.IOException; +import java.io.PrintStream; +import java.util.logging.Logger; + +import javax.annotation.Nonnull; + +/** + * @author Cyrille Le Clerc + */ +public class MavenBuildDetailsPublisher extends MavenPublisher { + private static final long serialVersionUID = 1L; + private static final Logger LOGGER = Logger.getLogger(MavenBuildDetailsPublisher.class.getName()); + + @Override + public void process(@Nonnull StepContext context, @Nonnull Element mavenSpyLogsElt) throws IOException, InterruptedException { + TaskListener listener = context.get(TaskListener.class); + PrintStream logger = listener.getLogger(); + process(mavenSpyLogsElt, logger); + + } + + public void process(@Nonnull Element mavenSpyLogsElt, PrintStream out) { + out.println("[withMaven] Build details"); + // FIXME + } + + + + + + @Symbol("moduleViewPublisher") + @Extension + public static class DescriptorImpl extends MavenPublisher.DescriptorImpl { + @Nonnull + @Override + public String getDisplayName() { + return "Module View Publisher"; + } + + @Override + public int ordinal() { + return 1000; + } + + @Nonnull + @Override + public String getSkipFileName() { + return ".skip-module-view"; + } + + } +} diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenLinkerPublisher2.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenLinkerPublisher2.java index 81190141..b80189de 100644 --- a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenLinkerPublisher2.java +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenLinkerPublisher2.java @@ -4,11 +4,14 @@ import hudson.model.Run; import org.jenkinsci.Symbol; import org.jenkinsci.plugins.pipeline.maven.MavenPublisher; +import org.jenkinsci.plugins.pipeline.maven.model.MavenExecutionDetails; +import org.jenkinsci.plugins.pipeline.maven.model.ObjectFactory; import org.jenkinsci.plugins.workflow.steps.StepContext; import org.kohsuke.stapler.DataBoundConstructor; import org.w3c.dom.Element; import java.io.IOException; +import java.util.Collections; /** @@ -31,6 +34,7 @@ public class MavenLinkerPublisher2 extends MavenPublisher { private static final long serialVersionUID = 1L; + @DataBoundConstructor public MavenLinkerPublisher2() { // default DataBoundConstructor @@ -42,10 +46,16 @@ public MavenLinkerPublisher2() { @Override public synchronized void process(StepContext context, Element mavenSpyLogsElt) throws IOException, InterruptedException { Run run = context.get(Run.class); + + MavenExecutionDetails mavenExecutionDetails = new ObjectFactory().analyseMavenBuildExecution(mavenSpyLogsElt); + // we replace instead of because we want to refresh the cache org.jenkinsci.plugins.pipeline.maven.publishers.MavenReport.getGeneratedArtifacts() - run.addOrReplaceAction(new MavenReport(run)); + run.addOrReplaceAction(new MavenReport(run, Collections.singletonList(mavenExecutionDetails))); } + + + @Symbol("mavenLinkerPublisher") @Extension public static class DescriptorImpl extends MavenPublisher.DescriptorImpl { diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport.java index 05e8d6ce..a6a5ff3a 100644 --- a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport.java +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport.java @@ -10,6 +10,8 @@ import org.jenkinsci.plugins.pipeline.maven.GlobalPipelineMavenConfig; import org.jenkinsci.plugins.pipeline.maven.MavenArtifact; import org.jenkinsci.plugins.pipeline.maven.MavenDependency; +import org.jenkinsci.plugins.pipeline.maven.model.MavenExecutionDetails; +import org.jenkinsci.plugins.pipeline.maven.model.MavenProjectExecutionDetails; import java.io.Serializable; import java.util.Collection; @@ -25,7 +27,6 @@ import javax.annotation.CheckForNull; import javax.annotation.Nonnull; -import javax.annotation.Nullable; /** * Maven report for the build. Intended to be extended. @@ -42,8 +43,11 @@ public class MavenReport implements RunAction2, SimpleBuildStep.LastBuildAction, private transient List generatedArtifacts; - public MavenReport(@Nonnull Run run) { + private List mavenExecutionDetails; + + public MavenReport(@Nonnull Run run, @Nonnull List mavenExecutionDetails) { this.run = run; + this.mavenExecutionDetails = mavenExecutionDetails; } @Override @@ -87,13 +91,18 @@ public synchronized Collection getDownstreamJobs() { } // security / authorization is checked by Jenkins#getItemByFullName try { - return Jenkins.getInstance().getItemByFullName(jobFullName, Job.class); + return Jenkins.get().getItemByFullName(jobFullName, Job.class); } catch (AccessDeniedException e) { return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); } + + public List getMavenExecutionDetails() { + return this.mavenExecutionDetails; + } + public synchronized SortedMap> getDownstreamJobsByArtifact() { Map> downstreamJobsByArtifact = GlobalPipelineMavenConfig.get().getDao().listDownstreamJobsByArtifact(run.getParent().getFullName(), run.getNumber()); TreeMap> result = new TreeMap<>(); @@ -171,4 +180,5 @@ public String getDisplayName() { public String getUrlName() { return "maven"; } + } diff --git a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/util/XmlUtils.java b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/util/XmlUtils.java index 572ad972..617c5c7c 100644 --- a/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/util/XmlUtils.java +++ b/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/util/XmlUtils.java @@ -65,14 +65,19 @@ public class XmlUtils { private static final Logger LOGGER = Logger.getLogger(XmlUtils.class.getName()); - public static MavenArtifact newMavenArtifact(Element artifactElt) { + @Nonnull + public static MavenArtifact newMavenArtifact(@Nonnull Element artifactElt) { + if (!artifactElt.hasAttribute("groupId") || !artifactElt.hasAttribute("artifactId") || !artifactElt.hasAttribute("version")) { + LOGGER.log(Level.WARNING, "Invalid artifact element " + XmlUtils.toString(artifactElt)); + } MavenArtifact mavenArtifact = new MavenArtifact(); loadMavenArtifact(artifactElt, mavenArtifact); return mavenArtifact; } - public static MavenDependency newMavenDependency(Element dependencyElt) { + @Nonnull + public static MavenDependency newMavenDependency(@Nonnull Element dependencyElt) { MavenDependency dependency = new MavenDependency(); loadMavenArtifact(dependencyElt, dependency); dependency.setScope(dependencyElt.getAttribute("scope")); @@ -81,7 +86,7 @@ public static MavenDependency newMavenDependency(Element dependencyElt) { return dependency; } - private static void loadMavenArtifact(Element artifactElt, MavenArtifact mavenArtifact) { + private static void loadMavenArtifact(@Nonnull Element artifactElt, @Nonnull MavenArtifact mavenArtifact) { mavenArtifact.setGroupId(artifactElt.getAttribute("groupId")); mavenArtifact.setArtifactId(artifactElt.getAttribute("artifactId")); mavenArtifact.setVersion(artifactElt.getAttribute("version")); @@ -102,9 +107,10 @@ private static void loadMavenArtifact(Element artifactElt, MavenArtifact mavenAr /* - - */ - public static MavenSpyLogProcessor.PluginInvocation newPluginInvocation(Element pluginInvocationElt) { + * + */ + @Nonnull + public static MavenSpyLogProcessor.PluginInvocation newPluginInvocation(@Nonnull Element pluginInvocationElt) { MavenSpyLogProcessor.PluginInvocation pluginInvocation = new MavenSpyLogProcessor.PluginInvocation(); pluginInvocation.groupId = pluginInvocationElt.getAttribute("groupId"); pluginInvocation.artifactId = pluginInvocationElt.getAttribute("artifactId"); diff --git a/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport/index.jelly b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport/index.jelly index 03b144c9..3ac43042 100644 --- a/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport/index.jelly +++ b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/MavenReport/index.jelly @@ -86,6 +86,21 @@ Inspired by /hudson/tasks/Fingerprinter/FingerprintAction/index.jelly + +
    + +
  • + ${dependency.id} - ${dependency.type} - ${dependency.scope} +
  • +
    +
+ + Dependencies recorded according to the settings of the "Pipeline Graph Publisher" +
+ By default, only "snapshot" dependencies are recorded and "release" dependencies are ignored + to optimize the size on disk of the database of the "Pipeline Maven Plugin". +
+

Contributions to improve this dashboard are appreciated. Please feel free to submit a Pull Request or to diff --git a/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/config.jelly b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/config.jelly new file mode 100644 index 00000000..637bc1d0 --- /dev/null +++ b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/config.jelly @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/help-disabled.html b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/help-disabled.html new file mode 100644 index 00000000..fbbc8445 --- /dev/null +++ b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/help-disabled.html @@ -0,0 +1,3 @@ +
+ Skip the publishing of maven build details. +
\ No newline at end of file diff --git a/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/help.html b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/help.html new file mode 100644 index 00000000..7c4901cf --- /dev/null +++ b/jenkins-plugin/src/main/resources/org/jenkinsci/plugins/pipeline/maven/publishers/ModuleViewPublisher/help.html @@ -0,0 +1,3 @@ +
+ Publish Maven build details +
\ No newline at end of file diff --git a/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/DependencyFingerprintPublisherTest.java b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/DependencyFingerprintPublisherTest.java index c812fa05..1060b80b 100644 --- a/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/DependencyFingerprintPublisherTest.java +++ b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/DependencyFingerprintPublisherTest.java @@ -1,29 +1,11 @@ package org.jenkinsci.plugins.pipeline.maven; import hudson.model.Fingerprint; -import hudson.model.Job; import hudson.model.Result; -import hudson.tasks.Maven; -import jenkins.mvn.DefaultGlobalSettingsProvider; -import jenkins.mvn.DefaultSettingsProvider; -import jenkins.mvn.GlobalMavenConfig; -import jenkins.plugins.git.GitSampleRepoRule; -import jenkins.scm.impl.mock.GitSampleRepoRuleUtils; -import org.jenkinsci.Symbol; import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; -import org.jenkinsci.plugins.workflow.job.WorkflowRun; -import org.junit.Before; -import org.junit.ClassRule; -import org.junit.Rule; import org.junit.Test; -import org.jvnet.hudson.test.BuildWatcher; -import org.jvnet.hudson.test.ExtendedToolInstallations; -import org.jvnet.hudson.test.JenkinsRule; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Hashtable; import static org.hamcrest.CoreMatchers.*; diff --git a/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/MavenPublisherStrategyTest.java b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/MavenPublisherStrategyTest.java index 84cb67bc..f280da5b 100644 --- a/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/MavenPublisherStrategyTest.java +++ b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/MavenPublisherStrategyTest.java @@ -30,7 +30,7 @@ public void listMavenPublishers() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); List mavenPublishers = MavenPublisherStrategy.IMPLICIT.buildPublishersList(Collections.emptyList(), new StreamTaskListener(baos)); - Assert.assertThat(mavenPublishers.size(), CoreMatchers.is(12)); + Assert.assertThat(mavenPublishers.size(), CoreMatchers.is(13)); Map reportersByDescriptorId = new HashMap<>(); for(MavenPublisher mavenPublisher : mavenPublishers) { @@ -47,5 +47,6 @@ public void listMavenPublishers() throws Exception { assertThat(reportersByDescriptorId.containsKey(new JGivenTestsPublisher.DescriptorImpl().getId()), is(true)); assertThat(reportersByDescriptorId.containsKey(new MavenLinkerPublisher2.DescriptorImpl().getId()), is(true)); assertThat(reportersByDescriptorId.containsKey(new JacocoReportPublisher.DescriptorImpl().getId()), is(true)); + assertThat(reportersByDescriptorId.containsKey(new MavenBuildDetailsPublisher.DescriptorImpl().getId()), is(true)); } } diff --git a/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/model/ObjectFactoryTest.java b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/model/ObjectFactoryTest.java new file mode 100644 index 00000000..aed603c2 --- /dev/null +++ b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/model/ObjectFactoryTest.java @@ -0,0 +1,97 @@ +package org.jenkinsci.plugins.pipeline.maven.model; + +import org.hamcrest.Matchers; +import org.jenkinsci.plugins.pipeline.maven.publishers.MavenBuildDetailsPublisher; +import org.junit.Assert; +import org.junit.Test; +import org.w3c.dom.Document; + +import java.io.InputStream; +import java.util.List; +import java.util.SortedSet; + +import javax.xml.parsers.DocumentBuilderFactory; + +import static org.junit.Assert.*; + +/** + * @author Cyrille Le Clerc + */ +public class ObjectFactoryTest { + @Test + public void analyseMavenMojoExecutions_simple_jar_build() throws Exception { + + InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-jar.xml"); + Document mavenBuildSpyLogs = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); + ObjectFactory objectFactory = new ObjectFactory(); + List mavenMojoExecutionDetails = objectFactory.analyseMavenMojoExecutions(mavenBuildSpyLogs.getDocumentElement()); + for (MavenMojoExecutionDetails mojoTimer : mavenMojoExecutionDetails) { + System.out.println(mojoTimer + " " + mojoTimer.getDuration()); + } + Assert.assertThat(mavenMojoExecutionDetails.size(), Matchers.is(10)); + } + + @Test + public void analyseMavenProjectExecutions_simple_jar_build() throws Exception { + + InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-jar.xml"); + Document mavenBuildSpyLogs = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); + ObjectFactory objectFactory = new ObjectFactory(); + MavenExecutionDetails executionDetails = objectFactory.analyseMavenBuildExecution(mavenBuildSpyLogs.getDocumentElement()); + + Assert.assertThat(executionDetails.getMavenProjectExecutionDetails().size(), Matchers.is(1)); + MavenProjectExecutionDetails mavenProjectExecutionDetails = executionDetails.getMavenProjectExecutionDetails().first(); + System.out.println(mavenProjectExecutionDetails + " " + mavenProjectExecutionDetails.getDuration()); + + SortedSet mojoExecutionDetails = mavenProjectExecutionDetails.getMojoExecutionDetails(); + Assert.assertThat(mojoExecutionDetails.size(), Matchers.is(10)); + // TODO + + + + } + + @Test + public void analyseMavenMojoExecutions_multi_module_build() throws Exception { + + InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml"); + Document mavenBuildSpyLogs = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); + ObjectFactory objectFactory = new ObjectFactory(); + MavenExecutionDetails executionDetails = objectFactory.analyseMavenBuildExecution(mavenBuildSpyLogs.getDocumentElement()); + Assert.assertThat(executionDetails.getMavenProjectExecutionDetails().size(), Matchers.is(4)); + + for (MavenProjectExecutionDetails mavenProjectExecutionDetails : executionDetails.getMavenProjectExecutionDetails()) { + System.out.println(mavenProjectExecutionDetails + " " + mavenProjectExecutionDetails.getDuration()); + } + + System.out.println("****************"); + + System.out.println(executionDetails.getExecutionDurationDetails()); + } + +// @Test +// public void analyseMavenProjectExecutions_multi_module_build() throws Exception { +// +// InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml"); +// Document mavenBuildSpyLogs = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); +// ObjectFactory objectFactory = new ObjectFactory(); +// List mavenMojoExecutionDetails = objectFactory.analyseMavenMojoExecutions(mavenBuildSpyLogs.getDocumentElement()); +// +// for (MavenMojoExecutionDetails mojoTimer : mavenMojoExecutionDetails) { +// System.out.println(mojoTimer + " " + mojoTimer.getDuration()); +// +// for (MavenMojoExecutionDetails mojoTimer : mojoTimer.getTimers()) { +// System.out.println("\t" + mojoTimer + " " + mojoTimer.getDuration()); +// } +// } +// } + + @Test + public void process_multi_module_build() throws Exception { + + InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml"); + Document mavenBuildSpyLogs = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); + MavenBuildDetailsPublisher mavenBuildDetailsPublisher = new MavenBuildDetailsPublisher(); + mavenBuildDetailsPublisher.process(mavenBuildSpyLogs.getDocumentElement(), System.out); + } +} \ No newline at end of file diff --git a/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenExecutionDetailsPublisherTest.java b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenExecutionDetailsPublisherTest.java new file mode 100644 index 00000000..0a323256 --- /dev/null +++ b/jenkins-plugin/src/test/java/org/jenkinsci/plugins/pipeline/maven/publishers/MavenExecutionDetailsPublisherTest.java @@ -0,0 +1,19 @@ +package org.jenkinsci.plugins.pipeline.maven.publishers; + +import org.hamcrest.Matchers; +import org.junit.Assert; +import org.junit.Test; +import org.w3c.dom.Document; + +import java.io.InputStream; +import java.util.List; + +import javax.xml.parsers.DocumentBuilderFactory; + +/** + * @author Cyrille Le Clerc + */ +public class MavenExecutionDetailsPublisherTest { + + +} \ No newline at end of file diff --git a/jenkins-plugin/src/test/resources/org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml b/jenkins-plugin/src/test/resources/org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml index 059778fe..ccddd631 100644 --- a/jenkins-plugin/src/test/resources/org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml +++ b/jenkins-plugin/src/test/resources/org/jenkinsci/plugins/pipeline/maven/maven-spy-deploy-multi-module.xml @@ -1,45 +1,127 @@ - - + + - - - - - /path/to/home/.m2/settings.xml - /path/to/maven/3.5.0/libexec/conf/settings.xml + + /path/to/.m2/settings.xml + /usr/local/Cellar/maven/3.6.1/libexec/conf/settings.xml - + /path/to/multi-module-maven-project/pom.xml - /path/to/maven/3.5.0/libexec/conf/settings.xml - /path/to/home/.m2/settings.xml + /usr/local/Cellar/maven/3.6.1/libexec/conf/settings.xml + /path/to/.m2/settings.xml /path/to/multi-module-maven-project - + - - + + - - + + + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + - - + + - + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -53,11 +135,11 @@ ${updateReleaseInfo} - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -71,11 +153,11 @@ ${updateReleaseInfo} - - + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -93,11 +175,15 @@ ${updateReleaseInfo} - - + + + + + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -114,36 +200,267 @@ ${maven.deploy.skip} ${updateReleaseInfo} + + nexus3.beescloud.com + https://nexus3.beescloud.com/repository/maven-snapshots/ + - - + + - + - - + + + - - + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + + + + + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + - + - - + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + - + ${project.build.filters} @ @@ -162,11 +479,11 @@ false - - + + - + ${project.build.filters} @ @@ -185,11 +502,11 @@ false - - + + - + ${basedir} ${project.build.directory} ${project.compileClasspathElements} @@ -224,11 +541,11 @@ ${session} - - + + - + ${basedir} ${project.build.directory} ${project.compileClasspathElements} @@ -263,11 +580,11 @@ ${session} - - + + - + ${project.build.filters} @ @@ -287,11 +604,11 @@ false - - + + - + ${project.build.filters} @ @@ -311,11 +628,11 @@ false - - + + - + ${basedir} ${project.build.directory} ${project.testClasspathElements} @@ -351,11 +668,11 @@ ${session} - - + + - + ${basedir} ${project.build.directory} ${project.testClasspathElements} @@ -391,11 +708,11 @@ ${session} - - + + - + ${maven.test.additionalClasspath} ${argLine} ${basedir} @@ -465,19 +782,19 @@ ${session} - - + + - + ${project.build.directory}/surefire-reports - - + + - + ${start-class} @@ -496,20 +813,20 @@ ${jar.useDefaultManifestFile} - - + + - + ${jar.finalName} ${project.build.directory} - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -551,11 +868,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -597,16 +914,8 @@ ${project.reporting.outputDirectory}/xref-test - - - - - - - - - - + + @@ -654,8 +963,8 @@ ${project.reporting.outputDirectory}/xref-test - - + + @@ -703,11 +1012,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -749,11 +1058,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -795,11 +1104,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -841,11 +1150,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -887,11 +1196,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -905,11 +1214,11 @@ ${updateReleaseInfo} - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -923,11 +1232,11 @@ ${updateReleaseInfo} - - + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -945,11 +1254,23 @@ ${updateReleaseInfo} - - + + + + + + + + + + + + + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -966,175 +1287,501 @@ ${maven.deploy.skip} ${updateReleaseInfo} + + nexus3.beescloud.com + https://nexus3.beescloud.com/repository/maven-snapshots/ + - - + + - - /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar - + + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT-sources.jar + + - - + + + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar + + + /path/to/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar + + + /path/to/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar + + + /path/to/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar + + + /path/to/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar + + + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar + + + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar + + + /path/to/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar + + + /path/to/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar + + + /path/to/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar + + + /path/to/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar + + + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar + + + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar + + + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar + + + /path/to/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar + + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar + + + /path/to/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar + + + /path/to/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar + + + + + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + - - + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + - + - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar - /path/to/home/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar - /path/to/home/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar + /path/to/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar - /path/to/home/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar + /path/to/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar - /path/to/home/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar + /path/to/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar - /path/to/home/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar + /path/to/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar - /path/to/home/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar - - /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar + /path/to/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar - /path/to/home/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar + /path/to/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar - /path/to/home/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar + /path/to/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar - /path/to/home/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar + /path/to/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar - /path/to/home/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar + /path/to/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar - /path/to/home/.m2/repository/junit/junit/4.12/junit-4.12.jar + /path/to/.m2/repository/junit/junit/4.12/junit-4.12.jar - /path/to/home/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar + /path/to/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar - /path/to/home/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar + /path/to/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar - /path/to/home/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar + /path/to/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar - /path/to/home/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar + /path/to/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar - /path/to/home/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar + /path/to/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar - /path/to/home/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar - - + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + - + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + ${project.build.filters} @ @@ -1153,11 +1800,11 @@ false - - + + - + ${project.build.filters} @ @@ -1176,11 +1823,11 @@ false - - + + - + ${basedir} ${project.build.directory} ${project.compileClasspathElements} @@ -1215,11 +1862,11 @@ ${session} - - + + - + ${basedir} ${project.build.directory} ${project.compileClasspathElements} @@ -1254,11 +1901,11 @@ ${session} - - + + - + ${project.build.filters} @ @@ -1278,11 +1925,11 @@ false - - + + - + ${project.build.filters} @ @@ -1302,11 +1949,11 @@ false - - + + - + ${basedir} ${project.build.directory} ${project.testClasspathElements} @@ -1342,11 +1989,11 @@ ${session} - - + + - + ${basedir} ${project.build.directory} ${project.testClasspathElements} @@ -1382,11 +2029,11 @@ ${session} - - + + - + ${maven.test.additionalClasspath} ${argLine} ${basedir} @@ -1456,19 +2103,19 @@ ${session} - - + + - + ${project.build.directory}/surefire-reports - - + + - + ${start-class} @@ -1487,20 +2134,20 @@ ${jar.useDefaultManifestFile} - - + + - + ${jar.finalName} ${project.build.directory} - - + + - + true ${excludeArtifactIds} true @@ -1514,11 +2161,11 @@ ${skip} - - + + - + true ${excludeArtifactIds} true @@ -1532,11 +2179,11 @@ ${skip} - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -1578,11 +2225,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -1624,155 +2271,155 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar - /path/to/home/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar - /path/to/home/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar + /path/to/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar - /path/to/home/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar + /path/to/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar - /path/to/home/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar + /path/to/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar - /path/to/home/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar + /path/to/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar - /path/to/home/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar - - /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar + /path/to/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar - /path/to/home/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar + /path/to/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar - /path/to/home/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar + /path/to/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar - /path/to/home/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar + /path/to/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar - /path/to/home/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar + /path/to/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar - /path/to/home/.m2/repository/junit/junit/4.12/junit-4.12.jar + /path/to/.m2/repository/junit/junit/4.12/junit-4.12.jar - /path/to/home/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar + /path/to/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar - /path/to/home/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar + /path/to/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar - /path/to/home/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar + /path/to/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar - /path/to/home/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar + /path/to/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar - /path/to/home/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar + /path/to/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar - /path/to/home/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar - - + + @@ -1820,8 +2467,8 @@ ${project.reporting.outputDirectory}/xref-test - - + + @@ -1869,11 +2516,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -1915,11 +2562,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -1961,11 +2608,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -2007,11 +2654,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -2053,11 +2700,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -2071,11 +2718,11 @@ ${updateReleaseInfo} - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -2089,11 +2736,11 @@ ${updateReleaseInfo} - - + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -2111,11 +2758,23 @@ ${updateReleaseInfo} - - + + + + + + + + + + + + + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -2132,175 +2791,501 @@ ${maven.deploy.skip} ${updateReleaseInfo} + + nexus3.beescloud.com + https://nexus3.beescloud.com/repository/maven-snapshots/ + - - + + - - /path/to/multi-module-maven-project/demo-1/target/demo-1-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/demo-1/target/demo-1-0.0.30-SNAPSHOT.jar - + + + /path/to/multi-module-maven-project/demo-1/target/demo-1-0.0.30-SNAPSHOT-sources.jar + + - - + + + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar + + + /path/to/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar + + + /path/to/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar + + + /path/to/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar + + + /path/to/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar + + + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar + + + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar + + + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar + + + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar + + + /path/to/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar + + + /path/to/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar + + + /path/to/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar + + + /path/to/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar + + + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar + + + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar + + + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar + + + /path/to/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar + + + /path/to/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar + + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar + + + /path/to/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar + + + /path/to/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar + + + + + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
- - + + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + - + - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar - /path/to/home/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar - /path/to/home/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar + /path/to/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar - /path/to/home/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar + /path/to/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar - /path/to/home/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar + /path/to/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar - /path/to/home/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar + /path/to/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar - /path/to/home/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar - - /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar + /path/to/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar - /path/to/home/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar + /path/to/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar - /path/to/home/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar + /path/to/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar - /path/to/home/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar + /path/to/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar - /path/to/home/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar + /path/to/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar - /path/to/home/.m2/repository/junit/junit/4.12/junit-4.12.jar + /path/to/.m2/repository/junit/junit/4.12/junit-4.12.jar - /path/to/home/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar + /path/to/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar - /path/to/home/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar + /path/to/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar - /path/to/home/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar + /path/to/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar - /path/to/home/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar + /path/to/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar - /path/to/home/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar + /path/to/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar - /path/to/home/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar - - + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + + + + + ${attach} + ${maven.source.classifier} + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${source.excludeResources} + ${project.build.finalName} + ${source.forceCreation} + ${source.includePom} + ${project.build.directory} + ${project} + ${reactorProjects} + ${session} + ${source.skip} + true + false + + + + - + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+
+ + + + + ${project.build.filters} @ @@ -2319,11 +3304,11 @@ false - - + + - + ${project.build.filters} @ @@ -2342,11 +3327,11 @@ false - - + + - + ${basedir} ${project.build.directory} ${project.compileClasspathElements} @@ -2381,11 +3366,11 @@ ${session} - - + + - + ${basedir} ${project.build.directory} ${project.compileClasspathElements} @@ -2420,11 +3405,11 @@ ${session} - - + + - + ${project.build.filters} @ @@ -2444,11 +3429,11 @@ false - - + + - + ${project.build.filters} @ @@ -2468,11 +3453,11 @@ false - - + + - + ${basedir} ${project.build.directory} ${project.testClasspathElements} @@ -2508,11 +3493,11 @@ ${session} - - + + - + ${basedir} ${project.build.directory} ${project.testClasspathElements} @@ -2548,11 +3533,11 @@ ${session} - - + + - + ${maven.test.additionalClasspath} ${argLine} ${basedir} @@ -2622,19 +3607,19 @@ ${session} - - + + - + ${project.build.directory}/surefire-reports - - + + - + ${start-class} @@ -2653,20 +3638,20 @@ ${jar.useDefaultManifestFile} - - + + - + ${jar.finalName} ${project.build.directory} - - + + - + true ${excludeArtifactIds} true @@ -2680,11 +3665,11 @@ ${skip} - - + + - + true ${excludeArtifactIds} true @@ -2698,11 +3683,11 @@ ${skip} - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -2744,11 +3729,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -2790,155 +3775,155 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.4.RELEASE/spring-boot-starter-web-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar - /path/to/home/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar + /path/to/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar - /path/to/home/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar + /path/to/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.4.RELEASE/spring-boot-starter-tomcat-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.15/tomcat-embed-core-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.15/tomcat-embed-el-8.5.15.jar - /path/to/home/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar + /path/to/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.15/tomcat-embed-websocket-8.5.15.jar - /path/to/home/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar + /path/to/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar - /path/to/home/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar + /path/to/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar - /path/to/home/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar + /path/to/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar - /path/to/home/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar + /path/to/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.8/jackson-databind-2.8.8.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar - /path/to/home/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar + /path/to/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar - /path/to/home/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-web/4.3.9.RELEASE/spring-web-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-webmvc/4.3.9.RELEASE/spring-webmvc-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar - - /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/shared-core/target/shared-core-0.0.30-SNAPSHOT.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-starter-test/1.5.4.RELEASE/spring-boot-starter-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar + /path/to/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar - /path/to/home/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar + /path/to/.m2/repository/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar - /path/to/home/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar + /path/to/.m2/repository/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar - /path/to/home/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar + /path/to/.m2/repository/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar - /path/to/home/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar + /path/to/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar - /path/to/home/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar + /path/to/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar - /path/to/home/.m2/repository/junit/junit/4.12/junit-4.12.jar + /path/to/.m2/repository/junit/junit/4.12/junit-4.12.jar - /path/to/home/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar + /path/to/.m2/repository/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar - /path/to/home/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar + /path/to/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar - /path/to/home/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar + /path/to/.m2/repository/org/objenesis/objenesis/2.1/objenesis-2.1.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar - /path/to/home/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar + /path/to/.m2/repository/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar - /path/to/home/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar + /path/to/.m2/repository/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar - /path/to/home/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar + /path/to/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar - /path/to/home/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar - /path/to/home/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar + /path/to/.m2/repository/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar - - + + @@ -2986,8 +3971,8 @@ ${project.reporting.outputDirectory}/xref-test - - + + @@ -3035,11 +4020,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -3081,11 +4066,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -3127,11 +4112,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -3173,11 +4158,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.build.outputDirectory} ${project.compileSourceRoots} ${findbugs.debug} @@ -3219,11 +4204,11 @@ ${project.reporting.outputDirectory}/xref-test - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -3237,11 +4222,11 @@ ${updateReleaseInfo} - - + + - + ${project.artifact} ${project.attachedArtifacts} ${createChecksum} @@ -3255,11 +4240,11 @@ ${updateReleaseInfo} - - + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -3277,11 +4262,23 @@ ${updateReleaseInfo} - - + + + + + + + + + + + + + + - + ${altDeploymentRepository} ${altReleaseDeploymentRepository} ${altSnapshotDeploymentRepository} @@ -3298,34 +4295,41 @@ ${maven.deploy.skip} ${updateReleaseInfo} + + nexus3.beescloud.com + https://nexus3.beescloud.com/repository/maven-snapshots/ + - - + + - - /path/to/multi-module-maven-project/demo-2/target/demo-2-0.0.29-SNAPSHOT.jar + + /path/to/multi-module-maven-project/demo-2/target/demo-2-0.0.30-SNAPSHOT.jar - + + + /path/to/multi-module-maven-project/demo-2/target/demo-2-0.0.30-SNAPSHOT-sources.jar + + - - + + - + - + - + - - - + +
\ No newline at end of file