Skip to content

Commit eb58403

Browse files
authored
Add configuration to be able to use the plugin without scm info in pom (#228)
* Add configuration to be able to use the plugin without scm info in pom --------- Signed-off-by: Olivier Lamy <[email protected]>
1 parent e8bee16 commit eb58403

File tree

4 files changed

+75
-1
lines changed

4 files changed

+75
-1
lines changed

src/main/java/org/codehaus/mojo/build/AbstractScmMojo.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,20 @@ public abstract class AbstractScmMojo extends AbstractMojo {
135135
@Component
136136
protected ScmManager scmManager;
137137

138+
/**
139+
* Ignore error when scm url from pom is empty and replace by scm:scmProvider {@link #scmProvider}
140+
* @since 3.2.1
141+
*/
142+
@Parameter(property = "maven.buildNumber.ignoreEmptyScmUrl", defaultValue = "false")
143+
private boolean ignoreEmptyScmUrl;
144+
145+
/**
146+
* When scm url is empty, scm provider is needed {@link #ignoreEmptyScmUrl}
147+
* @since 3.2.1
148+
*/
149+
@Parameter(property = "maven.buildNumber.scmProvider", defaultValue = "git")
150+
private String scmProvider;
151+
138152
/**
139153
* Maven Security Dispatcher
140154
*
@@ -176,8 +190,9 @@ private String decrypt(String str, String server) {
176190
}
177191

178192
protected ScmRepository getScmRepository() throws ScmException {
193+
String repoUrl = !StringUtils.isBlank(this.scmConnectionUrl) ? scmConnectionUrl : scmDeveloperConnectionUrl;
179194
ScmRepository repository = scmManager.makeScmRepository(
180-
!StringUtils.isBlank(this.scmConnectionUrl) ? scmConnectionUrl : scmDeveloperConnectionUrl);
195+
StringUtils.isBlank(repoUrl) ? (ignoreEmptyScmUrl ? "scm:" + scmProvider + ":" : "") : repoUrl);
181196

182197
ScmProviderRepository scmRepo = repository.getProviderRepository();
183198

src/site/fml/faq.fml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ under the License.
2525
<answer>
2626
<p>Yes, set the plugin parameter </p> <source> &lt;revisionOnScmFailure&gt;</source> <p>to prevent
2727
the plugin from throwing an exception if SCM information is not found.</p>
28+
<p>The other option is to use <source>-Dmaven.buildNumber.ignoreEmptyScmUrl=true -Dmaven.buildNumber.scmProvider=git/svn/</source>
29+
Default is git</p>
2830
</answer>
2931
</faq>
3032

src/test/java/org/codehaus/mojo/build/it/CreateMetadataMojoTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,19 @@ public void testBasicJsonConfiguration() throws Exception {
5555
Assert.assertTrue(new File(testDir, "target/generated/build-metadata/build.properties").exists());
5656
Assert.assertTrue(new File(testDir, "target/classes/build.properties").exists());
5757
}
58+
59+
@Test
60+
public void testBasicConfigurationNoScm() throws Exception {
61+
File projDir = resources.getBasedir("create-metadata-it-no-scm");
62+
63+
MavenExecution mavenExec = maven.forProject(projDir);
64+
MavenExecutionResult result = mavenExec.withCliOption("-e").execute("clean", "test");
65+
result.assertErrorFreeLog();
66+
67+
File testDir = result.getBasedir();
68+
Assert.assertTrue(new File(testDir, "target/file1.properties").exists());
69+
Assert.assertTrue(new File(testDir, "target/xxx/file1.properties").exists());
70+
Assert.assertTrue(new File(testDir, "target/generated/build-metadata/build.properties").exists());
71+
Assert.assertTrue(new File(testDir, "target/classes/build.properties").exists());
72+
}
5873
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>org.codehaus.mojo.it</groupId>
7+
<artifactId>build-metadata-it</artifactId>
8+
<version>1.0-SNAPSHOT</version>
9+
10+
<build>
11+
12+
<defaultGoal>package</defaultGoal>
13+
14+
<plugins>
15+
<plugin>
16+
<groupId>org.codehaus.mojo</groupId>
17+
<artifactId>buildnumber-maven-plugin</artifactId>
18+
<version>${it-plugin.version}</version>
19+
<executions>
20+
<execution>
21+
<id>useLastCommittedRevision</id>
22+
<goals>
23+
<goal>create-metadata</goal>
24+
</goals>
25+
<configuration>
26+
<ignoreEmptyScmUrl>true</ignoreEmptyScmUrl>
27+
<revisionOnScmFailure>UNKNOWN</revisionOnScmFailure>
28+
<!-- see outputDirectory + outputName for the default outputFile -->
29+
<outputFiles>
30+
<outputFile>${project.build.directory}/file1.properties</outputFile>
31+
<outputFile>${project.build.directory}/xxx/file1.properties</outputFile>
32+
</outputFiles>
33+
<addOutputDirectoryToResources>true</addOutputDirectoryToResources>
34+
</configuration>
35+
</execution>
36+
</executions>
37+
</plugin>
38+
</plugins>
39+
40+
</build>
41+
42+
</project>

0 commit comments

Comments
 (0)