Skip to content

Commit 343c62d

Browse files
committed
check if configured schemaVersion is supported
fixes #469 Signed-off-by: Hervé Boutemy <[email protected]>
1 parent d001542 commit 343c62d

File tree

2 files changed

+36
-12
lines changed

2 files changed

+36
-12
lines changed

src/main/java/org/cyclonedx/maven/BaseCycloneDxMojo.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public abstract class BaseCycloneDxMojo extends AbstractMojo {
8282
*/
8383
@Parameter(property = "schemaVersion", defaultValue = "1.5", required = false)
8484
private String schemaVersion;
85+
private CycloneDxSchema.Version effectiveSchemaVersion = null;
8586

8687
/**
8788
* The CycloneDX output format that should be generated (<code>xml</code>, <code>json</code> or <code>all</code>).
@@ -311,6 +312,10 @@ public void execute() throws MojoExecutionException {
311312
}
312313
return;
313314
}
315+
if (!schemaVersion().getVersionString().equals(schemaVersion)) {
316+
getLog().warn("Invalid schemaVersion configured '" + schemaVersion +"', using " + effectiveSchemaVersion.getVersionString());
317+
schemaVersion = effectiveSchemaVersion.getVersionString();
318+
}
314319
logParameters();
315320

316321
// top level components do not currently set their scope, we track these to prevent merging of scopes
@@ -465,19 +470,22 @@ protected BomDependencies extractBOMDependencies(MavenProject mavenProject) thro
465470
* @return the CycloneDX schema to use
466471
*/
467472
protected CycloneDxSchema.Version schemaVersion() {
468-
if ("1.0".equals(schemaVersion)) {
469-
return CycloneDxSchema.Version.VERSION_10;
470-
} else if ("1.1".equals(schemaVersion)) {
471-
return CycloneDxSchema.Version.VERSION_11;
472-
} else if ("1.2".equals(schemaVersion)) {
473-
return CycloneDxSchema.Version.VERSION_12;
474-
} else if ("1.3".equals(schemaVersion)) {
475-
return CycloneDxSchema.Version.VERSION_13;
476-
} else if ("1.4".equals(schemaVersion)) {
477-
return CycloneDxSchema.Version.VERSION_14;
478-
} else {
479-
return CycloneDxSchema.Version.VERSION_15;
473+
if (effectiveSchemaVersion == null) {
474+
if ("1.0".equals(schemaVersion)) {
475+
effectiveSchemaVersion = CycloneDxSchema.Version.VERSION_10;
476+
} else if ("1.1".equals(schemaVersion)) {
477+
effectiveSchemaVersion = CycloneDxSchema.Version.VERSION_11;
478+
} else if ("1.2".equals(schemaVersion)) {
479+
effectiveSchemaVersion = CycloneDxSchema.Version.VERSION_12;
480+
} else if ("1.3".equals(schemaVersion)) {
481+
effectiveSchemaVersion = CycloneDxSchema.Version.VERSION_13;
482+
} else if ("1.4".equals(schemaVersion)) {
483+
effectiveSchemaVersion = CycloneDxSchema.Version.VERSION_14;
484+
} else {
485+
effectiveSchemaVersion = CycloneDxSchema.Version.VERSION_15;
486+
}
480487
}
488+
return effectiveSchemaVersion;
481489
}
482490

483491
protected void logAdditionalParameters() {

src/test/java/org/cyclonedx/maven/VerboseTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.File;
44

5+
import org.cyclonedx.CycloneDxSchema;
56
import org.junit.Test;
67
import org.junit.runner.RunWith;
78

@@ -47,4 +48,19 @@ public void testVerboseWithCli() throws Exception {
4748
.assertErrorFreeLog()
4849
.assertLogText("[INFO] CycloneDX: Parameters"); // check goal verbose output
4950
}
51+
52+
@Test
53+
public void testUnsupportedSchemaVersionCli() throws Exception {
54+
File projDir = resources.getBasedir("verbose");
55+
56+
verifier
57+
.forProject(projDir)
58+
.withCliOption("-Dcurrent.version=" + getCurrentVersion()) // inject cyclonedx-maven-plugin version
59+
.withCliOption("-B")
60+
.withCliOption("-DschemaVersion=1.5.1")
61+
.execute("verify")
62+
.assertErrorFreeLog()
63+
.assertLogText("[WARNING] Invalid schemaVersion configured '1.5.1', using " + CycloneDxSchema.VERSION_LATEST.getVersionString()) // check warning on invalid schema version
64+
.assertLogText("[INFO] CycloneDX: Creating BOM version " + CycloneDxSchema.VERSION_LATEST.getVersionString() + " with 0 component(s)"); // and display effective schema version
65+
}
5066
}

0 commit comments

Comments
 (0)