blob: e74e7400992ba3c4039b83b48b5868a3be2d94a4 [file] [log] [blame]
diff --git a/src/main/java/net/nicoulaj/maven/plugins/checksum/artifacts/ArtifactAttacher.java b/src/main/java/net/nicoulaj/maven/plugins/checksum/artifacts/ArtifactAttacher.java
index 1da2b10..e838514 100644
--- a/src/main/java/net/nicoulaj/maven/plugins/checksum/artifacts/ArtifactAttacher.java
+++ b/src/main/java/net/nicoulaj/maven/plugins/checksum/artifacts/ArtifactAttacher.java
@@ -1,44 +1,53 @@
-/*
- * checksum-maven-plugin - http://checksum-maven-plugin.nicoulaj.net
- * Copyright © 2010-2018 checksum-maven-plugin contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package net.nicoulaj.maven.plugins.checksum.artifacts;
-
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectHelper;
-
-import java.io.File;
-
-public class ArtifactAttacher implements ArtifactListener {
- private final MavenProject project;
- private final MavenProjectHelper projectHelper;
-
- public ArtifactAttacher(MavenProject project, MavenProjectHelper projectHelper) {
- this.project = project;
- this.projectHelper = projectHelper;
- }
-
- @Override
- public void artifactCreated(File artifact, String checksumType, String artifactType, String artifactClassifier) {
- if (checksumType.startsWith(".")) {
- // Project helper expects a type without leading dot (e.g. turn ".md5" into "md5").
- checksumType = checksumType.substring(1);
- }
-
- String attachmentType = artifactType == null ? checksumType : artifactType + "." + checksumType;
-
- projectHelper.attachArtifact(project, attachmentType, artifactClassifier, artifact);
- }
-}
+/*
+ * checksum-maven-plugin - http://checksum-maven-plugin.nicoulaj.net
+ * Copyright © 2010-2018 checksum-maven-plugin contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package net.nicoulaj.maven.plugins.checksum.artifacts;
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+
+import java.io.File;
+
+public class ArtifactAttacher implements ArtifactListener {
+ private final MavenProject project;
+ private final MavenProjectHelper projectHelper;
+
+ public ArtifactAttacher(MavenProject project, MavenProjectHelper projectHelper) {
+ this.project = project;
+ this.projectHelper = projectHelper;
+ }
+
+ @Override
+ public void artifactCreated(File artifact, String checksumType, String artifactType, String artifactClassifier) {
+ if (checksumType.startsWith(".")) {
+ // Project helper expects a type without leading dot (e.g. turn ".md5" into "md5").
+ checksumType = checksumType.substring(1);
+ }
+
+ String fileName = artifact.getName();
+ int period1 = fileName.lastIndexOf('.'); // finds xxx.yyy.sha512 period in front of sha512
+ int period2 = fileName.lastIndexOf('.', period1 - 1);
+ String attachmentType = fileName.substring(period2 + 1); // yyy.sha512
+// String attachmentType = fileType + "." + checksumType;
+// System.out.println("debug artifactType: " + ((artifactType == null) ? "null" : artifactType));
+// System.out.println("debug artifactClassifier: " + artifactClassifier);
+// System.out.println("debug checksumType: " + ((checksumType == null) ? "null" : checksumType));
+// System.out.println("debug derived attachmentType: " + attachmentType);
+// System.out.println("debug artifact: " + artifact.getAbsolutePath());
+
+ projectHelper.attachArtifact(project, attachmentType, artifactClassifier, artifact);
+ }
+}
diff --git a/src/main/java/net/nicoulaj/maven/plugins/checksum/mojo/ArtifactsMojo.java b/src/main/java/net/nicoulaj/maven/plugins/checksum/mojo/ArtifactsMojo.java
index e70347e..d654ae1 100644
--- a/src/main/java/net/nicoulaj/maven/plugins/checksum/mojo/ArtifactsMojo.java
+++ b/src/main/java/net/nicoulaj/maven/plugins/checksum/mojo/ArtifactsMojo.java
@@ -1,266 +1,285 @@
-/*
- * checksum-maven-plugin - http://checksum-maven-plugin.nicoulaj.net
- * Copyright © 2010-2018 checksum-maven-plugin contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package net.nicoulaj.maven.plugins.checksum.mojo;
+/*
+ * checksum-maven-plugin - http://checksum-maven-plugin.nicoulaj.net
+ * Copyright © 2010-2018 checksum-maven-plugin contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package net.nicoulaj.maven.plugins.checksum.mojo;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Compute project artifacts checksum digests and store them in individual files and/or a summary file.
+ *
+ * @author <a href="mailto:julien.nicoulaud@gmail.com">Julien Nicoulaud</a>
+ * @since 1.0
+ */
+@Mojo(
+ name = ArtifactsMojo.NAME,
+ defaultPhase = LifecyclePhase.VERIFY,
+ requiresProject = true,
+ inheritByDefault = false,
+ threadSafe = true )
+public class ArtifactsMojo
+ extends AbstractChecksumMojo
+{
+
+ /**
+ * The mojo name.
+ */
+ public static final String NAME = "artifacts";
+
+ /**
+ * Indicates whether the build will store checksums in separate files (one file per algorithm per artifact).
+ *
+ * @since 1.0
+ */
+ @Parameter( defaultValue = "true" )
+ protected boolean individualFiles;
+
+ /**
+ * The directory where output files will be stored. Leave unset to have each file next to the source file.
+ *
+ * @since 1.0
+ */
+ @Parameter
+ protected String individualFilesOutputDirectory;
+
+ /**
+ * Indicates whether the build will store checksums to a single CSV summary file.
+ *
+ * @since 1.0
+ */
+ @Parameter( defaultValue = "false" )
+ protected boolean csvSummary;
+
+ /**
+ * The name of the summary file created if the option is activated.
+ *
+ * @see #csvSummary
+ * @since 1.0
+ */
+ @Parameter( defaultValue = "artifacts-checksums.csv" )
+ protected String csvSummaryFile;
+
+ /**
+ * Indicates whether the build will store checksums to a single XML summary file.
+ *
+ * @since 1.0
+ */
+ @Parameter( defaultValue = "false" )
+ protected boolean xmlSummary;
+
+ /**
+ * The name of the summary file created if the option is activated.
+ *
+ * @see #xmlSummary
+ * @since 1.0
+ */
+ @Parameter( defaultValue = "artifacts-checksums.xml" )
+ protected String xmlSummaryFile;
+
+ /**
+ * Indicates whether the build will store checksums to a single shasum summary file.
+ *
+ * @since 1.3
+ */
+ @Parameter( defaultValue = "false" )
+ protected boolean shasumSummary;
+
+ /**
+ * The name of the summary file created if the option is activated.
+ *
+ * @see #shasumSummary
+ * @since 1.3
+ */
+ @Parameter( defaultValue = "artifacts-checksums.sha" )
+ protected String shasumSummaryFile;
+
+ /**
+ * Append the artifact filename in the generated checksum file.
+ * This parameter require the parameter individualFiles be equal to true.
+ *
+ * @see #individualFiles
+ * @since 1.4
+ */
+ @Parameter (defaultValue = "false")
+ protected boolean appendFilename;
+
+ /**
+ * Constructor.
+ */
+ public ArtifactsMojo() {
+ super(false, true, true);
+ }
+
+ /**
+ * Build the list of files from which digests should be generated.
+ *
+ * <p>The list is composed of the project main and attached artifacts.</p>
+ *
+ * @return the list of files that should be processed.
+ * @see #hasValidFile(org.apache.maven.artifact.Artifact)
+ */
+ @Override
+ protected List<ChecksumFile> getFilesToProcess()
+ {
+ List<ChecksumFile> files = new LinkedList<ChecksumFile>();
+
+ // add pom (copy to target)
+ File pomToSign = new File( project.getBuild().getDirectory(), project.getBuild().getFinalName() + ".pom" );
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Compute project artifacts checksum digests and store them in individual files and/or a summary file.
- *
- * @author <a href="mailto:julien.nicoulaud@gmail.com">Julien Nicoulaud</a>
- * @since 1.0
- */
-@Mojo(
- name = ArtifactsMojo.NAME,
- defaultPhase = LifecyclePhase.VERIFY,
- requiresProject = true,
- inheritByDefault = false,
- threadSafe = true )
-public class ArtifactsMojo
- extends AbstractChecksumMojo
-{
-
- /**
- * The mojo name.
- */
- public static final String NAME = "artifacts";
-
- /**
- * Indicates whether the build will store checksums in separate files (one file per algorithm per artifact).
- *
- * @since 1.0
- */
- @Parameter( defaultValue = "true" )
- protected boolean individualFiles;
-
- /**
- * The directory where output files will be stored. Leave unset to have each file next to the source file.
- *
- * @since 1.0
- */
- @Parameter
- protected String individualFilesOutputDirectory;
-
- /**
- * Indicates whether the build will store checksums to a single CSV summary file.
- *
- * @since 1.0
- */
- @Parameter( defaultValue = "false" )
- protected boolean csvSummary;
-
- /**
- * The name of the summary file created if the option is activated.
- *
- * @see #csvSummary
- * @since 1.0
- */
- @Parameter( defaultValue = "artifacts-checksums.csv" )
- protected String csvSummaryFile;
-
- /**
- * Indicates whether the build will store checksums to a single XML summary file.
- *
- * @since 1.0
- */
- @Parameter( defaultValue = "false" )
- protected boolean xmlSummary;
-
- /**
- * The name of the summary file created if the option is activated.
- *
- * @see #xmlSummary
- * @since 1.0
- */
- @Parameter( defaultValue = "artifacts-checksums.xml" )
- protected String xmlSummaryFile;
-
- /**
- * Indicates whether the build will store checksums to a single shasum summary file.
- *
- * @since 1.3
- */
- @Parameter( defaultValue = "false" )
- protected boolean shasumSummary;
-
- /**
- * The name of the summary file created if the option is activated.
- *
- * @see #shasumSummary
- * @since 1.3
- */
- @Parameter( defaultValue = "artifacts-checksums.sha" )
- protected String shasumSummaryFile;
-
- /**
- * Append the artifact filename in the generated checksum file.
- * This parameter require the parameter individualFiles be equal to true.
- *
- * @see #individualFiles
- * @since 1.4
- */
- @Parameter (defaultValue = "false")
- protected boolean appendFilename;
-
- /**
- * Constructor.
- */
- public ArtifactsMojo() {
- super(false, true, true);
- }
-
- /**
- * Build the list of files from which digests should be generated.
- *
- * <p>The list is composed of the project main and attached artifacts.</p>
- *
- * @return the list of files that should be processed.
- * @see #hasValidFile(org.apache.maven.artifact.Artifact)
- */
- @Override
- protected List<ChecksumFile> getFilesToProcess()
- {
- List<ChecksumFile> files = new LinkedList<ChecksumFile>();
-
- // Add project main artifact.
- if ( hasValidFile( project.getArtifact() ) )
+ try
{
- files.add( new ChecksumFile( "", project.getArtifact().getFile(), project.getArtifact().getType(),null ) );
+ FileUtils.copyFile( project.getFile(), pomToSign );
}
-
- // Add projects attached.
- if ( project.getAttachedArtifacts() != null )
+ catch ( IOException e )
{
- for ( Artifact artifact : (List<Artifact>) project.getAttachedArtifacts() )
- {
- if ( hasValidFile( artifact ) )
- {
- files.add( new ChecksumFile( "", artifact.getFile(), artifact.getType(), artifact.getClassifier() ) );
- }
- }
+ throw new RuntimeException( new MojoExecutionException( "Error copying POM for signing.", e ) );
}
- return files;
- }
+
+ files.add( new ChecksumFile( "", pomToSign, "pom", null ) );
- /**
- * Decide whether the artifact file should be processed.
- *
- * <p>Excludes the project POM file and any file outside the build directory, because this could lead to writing
- * files on the user local repository for example.</p>
- *
- * @param artifact the artifact to check.
- * @return true if the artifact should be included in the files to process.
- */
- protected boolean hasValidFile( Artifact artifact )
- {
- // Make sure the file exists.
- boolean hasValidFile = artifact != null && artifact.getFile() != null && artifact.getFile().exists();
-
- // Exclude project POM file.
- hasValidFile = hasValidFile && !artifact.getFile().getPath().equals( project.getFile().getPath() );
-
- // Exclude files outside of build directory.
- hasValidFile = hasValidFile && artifact.getFile().getPath().startsWith( project.getBuild().getDirectory() );
-
- return hasValidFile;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected boolean isIndividualFiles()
- {
- return individualFiles;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected String getIndividualFilesOutputDirectory()
- {
- return individualFilesOutputDirectory;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected boolean isAppendFilename(){
- return this.appendFilename;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected boolean isCsvSummary()
- {
- return csvSummary;
- }
-
- /**
- * {@inheritDoc}
- */
- protected String getCsvSummaryFile()
- {
- return csvSummaryFile;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected boolean isXmlSummary()
- {
- return xmlSummary;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected String getXmlSummaryFile()
- {
- return xmlSummaryFile;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected boolean isShasumSummary()
- {
- return shasumSummary;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected String getShasumSummaryFile()
- {
- return shasumSummaryFile;
- }
-}
+ // Add project main artifact.
+ if ( hasValidFile( project.getArtifact() ) )
+ {
+ files.add( new ChecksumFile( "", project.getArtifact().getFile(), project.getArtifact().getType(),
+ project.getArtifact().getClassifier() ) );
+ }
+
+ // Add projects attached.
+ if ( project.getAttachedArtifacts() != null )
+ {
+ for ( Artifact artifact : (List<Artifact>) project.getAttachedArtifacts() )
+ {
+ if ( hasValidFile( artifact ) )
+ {
+ files.add( new ChecksumFile( "", artifact.getFile(), artifact.getType(), artifact.getClassifier() ) );
+ }
+ }
+ }
+ return files;
+ }
+
+ /**
+ * Decide whether the artifact file should be processed.
+ *
+ * <p>Excludes the project POM file and any file outside the build directory, because this could lead to writing
+ * files on the user local repository for example.</p>
+ *
+ * @param artifact the artifact to check.
+ * @return true if the artifact should be included in the files to process.
+ */
+ protected boolean hasValidFile( Artifact artifact )
+ {
+ // Make sure the file exists.
+ boolean hasValidFile = artifact != null && artifact.getFile() != null && artifact.getFile().exists();
+
+ // Exclude project POM file.
+ hasValidFile = hasValidFile && !artifact.getFile().getPath().equals( project.getFile().getPath() );
+
+ // Exclude files outside of build directory.
+ hasValidFile = hasValidFile && artifact.getFile().getPath().startsWith( project.getBuild().getDirectory() );
+
+ return hasValidFile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isIndividualFiles()
+ {
+ return individualFiles;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected String getIndividualFilesOutputDirectory()
+ {
+ return individualFilesOutputDirectory;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isAppendFilename(){
+ return this.appendFilename;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isCsvSummary()
+ {
+ return csvSummary;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected String getCsvSummaryFile()
+ {
+ return csvSummaryFile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isXmlSummary()
+ {
+ return xmlSummary;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected String getXmlSummaryFile()
+ {
+ return xmlSummaryFile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isShasumSummary()
+ {
+ return shasumSummary;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected String getShasumSummaryFile()
+ {
+ return shasumSummaryFile;
+ }
+}