1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.plugin;
20
21 import javax.inject.Inject;
22
23 import java.io.IOException;
24
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugins.annotations.Mojo;
27 import org.apache.maven.plugins.annotations.Parameter;
28 import org.apache.maven.project.MavenProject;
29 import org.apache.maven.scm.ScmException;
30 import org.apache.maven.scm.command.update.UpdateScmResult;
31 import org.apache.maven.scm.command.update.UpdateScmResultWithRevision;
32 import org.apache.maven.scm.manager.ScmManager;
33 import org.apache.maven.scm.repository.ScmRepository;
34 import org.apache.maven.settings.crypto.SettingsDecrypter;
35
36
37
38
39
40
41 @Mojo(name = "update", aggregator = true)
42 public class UpdateMojo extends AbstractScmMojo {
43
44
45
46 @Parameter(property = "scmVersionType")
47 private String scmVersionType;
48
49
50
51
52 @Parameter(property = "scmVersion")
53 private String scmVersion;
54
55
56
57
58 @Parameter(property = "revisionKey", defaultValue = "scm.revision")
59 private String revisionKey;
60
61
62
63
64 @Parameter(defaultValue = "${project}", required = true, readonly = true)
65 private MavenProject project;
66
67
68
69
70 @Parameter(property = "runChangelog", defaultValue = "false")
71 private boolean runChangelog = false;
72
73 @Inject
74 public UpdateMojo(ScmManager manager, SettingsDecrypter settingsDecrypter) {
75 super(manager, settingsDecrypter);
76 }
77
78
79
80
81 public void execute() throws MojoExecutionException {
82 super.execute();
83
84 try {
85 ScmRepository repository = getScmRepository();
86
87 UpdateScmResult result = getScmManager()
88 .update(repository, getFileSet(), getScmVersion(scmVersionType, scmVersion), runChangelog);
89
90 checkResult(result);
91
92 if (result instanceof UpdateScmResultWithRevision) {
93 String revision = ((UpdateScmResultWithRevision) result).getRevision();
94
95 getLog().debug("Storing revision in '" + revisionKey + "' project property.");
96
97 if (project.getProperties() != null)
98 {
99 project.getProperties().put(revisionKey, revision);
100 }
101
102 getLog().info("Project at revision " + revision);
103 }
104 } catch (IOException | ScmException e) {
105 throw new MojoExecutionException("Cannot run update command : ", e);
106 }
107 }
108 }