diff --git a/src/main/java/org/spdx/maven/CreateSpdxMojo.java b/src/main/java/org/spdx/maven/CreateSpdxMojo.java index d645f61..7f97f39 100644 --- a/src/main/java/org/spdx/maven/CreateSpdxMojo.java +++ b/src/main/java/org/spdx/maven/CreateSpdxMojo.java @@ -486,7 +486,7 @@ public class CreateSpdxMojo extends AbstractMojo * and locator "pkg:maven/${project.groupId}/${project.artifactId}@${project.version}". */ @Parameter( property = "spdx.generatePurls" ) - private boolean generatePurls; + private boolean generatePurls = true; public void execute() throws MojoExecutionException { diff --git a/src/main/java/org/spdx/maven/utils/SpdxExternalRefBuilder.java b/src/main/java/org/spdx/maven/utils/SpdxExternalRefBuilder.java index 59726a8..d93dd57 100644 --- a/src/main/java/org/spdx/maven/utils/SpdxExternalRefBuilder.java +++ b/src/main/java/org/spdx/maven/utils/SpdxExternalRefBuilder.java @@ -1,5 +1,7 @@ package org.spdx.maven.utils; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.List; import org.apache.maven.artifact.Artifact; @@ -26,9 +28,8 @@ private static ExternalRef generatePurlExternalRef( SpdxDocument spdxDoc, MavenP { try { - String purl = "pkg:maven/" + project.getGroupId() + "/" + project.getArtifactId() + "@" + project.getVersion(); return spdxDoc.createExternalRef( ReferenceCategory.PACKAGE_MANAGER, new ReferenceType("http://spdx.org/rdf/references/purl"), - purl, null ); + generatePurl( project ), null ); } catch ( InvalidSPDXAnalysisException e ) { @@ -37,4 +38,11 @@ private static ExternalRef generatePurlExternalRef( SpdxDocument spdxDoc, MavenP } } + private static String generatePurl( MavenProject project ) + { + return "pkg:maven/" + project.getGroupId() + "/" + + URLEncoder.encode( project.getArtifactId(), StandardCharsets.UTF_8 ) + + "@" + project.getVersion(); + } + } diff --git a/src/test/java/org/spdx/maven/TestSpdxMojo.java b/src/test/java/org/spdx/maven/TestSpdxMojo.java index c9d0a24..d97db6d 100644 --- a/src/test/java/org/spdx/maven/TestSpdxMojo.java +++ b/src/test/java/org/spdx/maven/TestSpdxMojo.java @@ -14,13 +14,11 @@ import org.junit.After; import org.junit.AfterClass; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.spdx.jacksonstore.MultiFormatStore; import org.spdx.jacksonstore.MultiFormatStore.Format; import org.spdx.library.ModelCopyManager; import org.spdx.library.model.ExternalRef; -import org.spdx.library.model.ReferenceType; import org.spdx.library.model.SpdxDocument; import org.spdx.library.model.SpdxElement; import org.spdx.library.model.SpdxFile; @@ -79,7 +77,7 @@ public void testExecute() throws Exception assertTrue( spdxFile.exists() ); // Test output artifact file is created File artifactFile = getTestFile( - "target/test-classes/unit/spdx-maven-plugin-test/spdx-maven-plugin-test.spdx.rdf.xml" ); + "target/test-classes/unit/spdx-maven-plugin-test/spdx maven plugin test.spdx.rdf.xml" ); assertTrue( artifactFile.exists() ); ISerializableModelStore modelStore = new RdfStore(); ModelCopyManager copyManager = new ModelCopyManager(); @@ -323,7 +321,7 @@ public void testExecuteUseArtfactId() throws Exception assertTrue( spdxFile.exists() ); // Test output artifact file is created File artifactFile = getTestFile( - "target/test-classes/unit/spdx-maven-plugin-test/spdx-maven-plugin-test.spdx.json" ); + "target/test-classes/unit/spdx-maven-plugin-test/spdx maven plugin test.spdx.json" ); assertTrue( artifactFile.exists() ); ISerializableModelStore modelStore = new MultiFormatStore( new InMemSpdxStore(), Format.JSON ); ModelCopyManager copyManager = new ModelCopyManager(); @@ -433,7 +431,7 @@ else if ( creator.equals( "Person: Creator2" ) ) assertTrue( described instanceof SpdxPackage ); SpdxPackage pkg = (SpdxPackage) described; // name - assertEquals( "org.spdx:spdx-maven-plugin-test", pkg.getName().get() ); + assertEquals( "org.spdx:spdx maven plugin test", pkg.getName().get() ); // packageAnnotations assertEquals( 1, pkg.getAnnotations().size() ); org.spdx.library.model.Annotation annotation = pkg.getAnnotations().toArray( new org.spdx.library.model.Annotation [pkg.getAnnotations().size()] )[0]; @@ -569,7 +567,7 @@ public void testExecuteJson() throws Exception assertTrue( spdxFile.exists() ); // Test output artifact file is created File artifactFile = getTestFile( - "target/test-classes/unit/spdx-maven-plugin-test/spdx-maven-plugin-test.spdx.json" ); + "target/test-classes/unit/spdx-maven-plugin-test/spdx maven plugin test.spdx.json" ); assertTrue( artifactFile.exists() ); ISerializableModelStore modelStore = new MultiFormatStore( new InMemSpdxStore(), Format.JSON ); ModelCopyManager copyManager = new ModelCopyManager(); @@ -852,7 +850,7 @@ public void testExecuteUriNotUrl() throws Exception assertTrue( spdxFile.exists() ); // Test output artifact file is created File artifactFile = getTestFile( - "target/test-classes/unit/spdx-maven-plugin-test/spdx-maven-plugin-test.spdx.rdf.xml" ); + "target/test-classes/unit/spdx-maven-plugin-test/spdx maven plugin test.spdx.rdf.xml" ); assertTrue( artifactFile.exists() ); ISerializableModelStore modelStore = new RdfStore(); ModelCopyManager copyManager = new ModelCopyManager(); @@ -885,7 +883,7 @@ public void testExecuteNoContributors() throws Exception assertTrue( spdxFile.exists() ); // Test output artifact file is created File artifactFile = getTestFile( - "target/test-classes/unit/spdx-maven-plugin-test/spdx-maven-plugin-test.spdx.rdf.xml" ); + "target/test-classes/unit/spdx-maven-plugin-test/spdx maven plugin test.spdx.rdf.xml" ); assertTrue( artifactFile.exists() ); ISerializableModelStore modelStore = new RdfStore(); ModelCopyManager copyManager = new ModelCopyManager(); @@ -1127,7 +1125,7 @@ public void testExecuteUseGeneratePurls() throws Exception assertTrue( spdxFile.exists() ); // Test output artifact file is created File artifactFile = getTestFile( - "target/test-classes/unit/spdx-maven-plugin-test/spdx-maven-plugin-test.spdx.json" ); + "target/test-classes/unit/spdx-maven-plugin-test/spdx maven plugin test.spdx.json" ); assertTrue( artifactFile.exists() ); ISerializableModelStore modelStore = new MultiFormatStore( new InMemSpdxStore(), Format.JSON ); ModelCopyManager copyManager = new ModelCopyManager(); @@ -1156,7 +1154,8 @@ public void testExecuteUseGeneratePurls() throws Exception assertEquals( externalRef.getReferenceCategory(), ReferenceCategory.PACKAGE_MANAGER ); assertEquals( externalRef.getReferenceType().getIndividualURI(), "http://spdx.org/rdf/references/purl"); assertEquals( externalRef.getReferenceLocator(), - "pkg:maven/" + pkg.getName().get().replace(":", "/") + "@" + pkg.getVersionInfo().get() ); + "pkg:maven/" + pkg.getName().get().replace( ":", "/" ).replaceAll( " ", "+" ) + + "@" + pkg.getVersionInfo().get() ); } } } diff --git a/src/test/resources/unit/spdx-maven-plugin-test/json-pom-generate-purl.xml b/src/test/resources/unit/spdx-maven-plugin-test/json-pom-generate-purl.xml index 053a7c9..0166101 100644 --- a/src/test/resources/unit/spdx-maven-plugin-test/json-pom-generate-purl.xml +++ b/src/test/resources/unit/spdx-maven-plugin-test/json-pom-generate-purl.xml @@ -4,7 +4,7 @@ 4.0.0 org.spdx - spdx-maven-plugin-test + spdx maven plugin test 1.0-SNAPSHOT jar Test SPDX Plugin diff --git a/src/test/resources/unit/spdx-maven-plugin-test/json-pom-use-artifact.xml b/src/test/resources/unit/spdx-maven-plugin-test/json-pom-use-artifact.xml index f54c3a5..5f62a3e 100644 --- a/src/test/resources/unit/spdx-maven-plugin-test/json-pom-use-artifact.xml +++ b/src/test/resources/unit/spdx-maven-plugin-test/json-pom-use-artifact.xml @@ -4,7 +4,7 @@ 4.0.0 org.spdx - spdx-maven-plugin-test + spdx maven plugin test 1.0-SNAPSHOT jar Test SPDX Plugin @@ -231,6 +231,7 @@ + false diff --git a/src/test/resources/unit/spdx-maven-plugin-test/json-pom.xml b/src/test/resources/unit/spdx-maven-plugin-test/json-pom.xml index a8dd724..90f5bb4 100644 --- a/src/test/resources/unit/spdx-maven-plugin-test/json-pom.xml +++ b/src/test/resources/unit/spdx-maven-plugin-test/json-pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.spdx - spdx-maven-plugin-test + spdx maven plugin test 1.0-SNAPSHOT jar Test SPDX Plugin @@ -230,6 +230,7 @@ + false diff --git a/src/test/resources/unit/spdx-maven-plugin-test/pom-with-no-contributors.xml b/src/test/resources/unit/spdx-maven-plugin-test/pom-with-no-contributors.xml index b6ce64f..95e45b0 100644 --- a/src/test/resources/unit/spdx-maven-plugin-test/pom-with-no-contributors.xml +++ b/src/test/resources/unit/spdx-maven-plugin-test/pom-with-no-contributors.xml @@ -4,7 +4,7 @@ 4.0.0 org.spdx - spdx-maven-plugin-test + spdx maven plugin test 1.0-SNAPSHOT jar Test SPDX Plugin @@ -231,6 +231,7 @@ + false diff --git a/src/test/resources/unit/spdx-maven-plugin-test/pom.xml b/src/test/resources/unit/spdx-maven-plugin-test/pom.xml index 1efd539..8b0d85e 100644 --- a/src/test/resources/unit/spdx-maven-plugin-test/pom.xml +++ b/src/test/resources/unit/spdx-maven-plugin-test/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.spdx - spdx-maven-plugin-test + spdx maven plugin test 1.0-SNAPSHOT jar Test SPDX Plugin @@ -235,6 +235,7 @@ + false diff --git a/src/test/resources/unit/spdx-maven-plugin-test/uri-pom.xml b/src/test/resources/unit/spdx-maven-plugin-test/uri-pom.xml index de9db6f..62776cb 100644 --- a/src/test/resources/unit/spdx-maven-plugin-test/uri-pom.xml +++ b/src/test/resources/unit/spdx-maven-plugin-test/uri-pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.spdx - spdx-maven-plugin-test + spdx maven plugin test 1.0-SNAPSHOT jar Test SPDX Plugin @@ -235,6 +235,7 @@ + false