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