You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by se...@apache.org on 2013/06/25 02:20:10 UTC
svn commit: r1496302 - in /maven/sandbox/trunk/plugins/maven-digest-plugin:
./ src/main/java/org/apache/maven/plugins/digest/
Author: sebb
Date: Tue Jun 25 00:20:09 2013
New Revision: 1496302
URL: http://svn.apache.org/r1496302
Log:
More fixups to work as a Maven plugin
Added:
maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java
- copied, changed from r1496291, maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelpMojo.java
Removed:
maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelpMojo.java
Modified:
maven/sandbox/trunk/plugins/maven-digest-plugin/NOTICE.txt
maven/sandbox/trunk/plugins/maven-digest-plugin/pom.xml
maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java
Modified: maven/sandbox/trunk/plugins/maven-digest-plugin/NOTICE.txt
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-digest-plugin/NOTICE.txt?rev=1496302&r1=1496301&r2=1496302&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-digest-plugin/NOTICE.txt (original)
+++ maven/sandbox/trunk/plugins/maven-digest-plugin/NOTICE.txt Tue Jun 25 00:20:09 2013
@@ -1,4 +1,4 @@
-Apache Commons Digest Plugin
+Apache Maven Digest Plugin
Copyright 2013 The Apache Software Foundation
This product includes software developed at
Modified: maven/sandbox/trunk/plugins/maven-digest-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-digest-plugin/pom.xml?rev=1496302&r1=1496301&r2=1496302&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-digest-plugin/pom.xml (original)
+++ maven/sandbox/trunk/plugins/maven-digest-plugin/pom.xml Tue Jun 25 00:20:09 2013
@@ -20,26 +20,28 @@
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-parent</artifactId>
- <version>30</version>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-plugins</artifactId>
+ <version>24</version>
</parent>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-digest-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-digest-plugin</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
- <name>Apache Commons Digest Maven Mojo</name>
+ <name>maven-digest-plugin Apache Maven Mojo</name>
<inceptionYear>2013</inceptionYear>
- <url>http://commons.apache.org/proper/commons-digest-plugin/</url>
+ <!-- TODO fix URL -->
+ <url>http://maven.apache.org/</url>
<description>
-Apache Commons Digest Maven plugin provides digest (hashing) facilities for files
+The Apache Maven Digest Mojo provides digest (hashing) facilities for files
</description>
<issueManagement>
<system>jira</system>
- <url>http://issues.apache.org/jira/browse/COMMONSSITE</url>
+ <!-- TODO fix -->
+ <url>http://jira.codehaus.org/browse/M-TODO-FIX</url>
</issueManagement>
<scm>
@@ -57,17 +59,6 @@ Apache Commons Digest Maven plugin provi
<mavenPluginPluginVersion>3.2</mavenPluginPluginVersion>
<maven.compiler.source>1.5</maven.compiler.source>
<maven.compiler.target>1.5</maven.compiler.target>
- <commons.release.version>0.1</commons.release.version>
- <commons.componentid>commons-digest-plugin</commons.componentid>
- <commons.rc.version>RC2</commons.rc.version>
- <commons.release.desc>(Requires Maven ${mavenVersion} or later)</commons.release.desc>
- <!-- Avoid problems with jar & osgi builds in CP -->
- <commons.manifestfile />
- <!-- Temporary fix until CP31 is released -->
- <maven.compile.source>${maven.compiler.source}</maven.compile.source>
- <maven.compile.target>${maven.compiler.target}</maven.compile.target>
- <!-- This should move to parent pom -->
- <commons.packages.directory>target/packages</commons.packages.directory>
</properties>
<dependencies>
@@ -121,156 +112,16 @@ Apache Commons Digest Maven plugin provi
</dependencies>
<build>
-
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-plugin-plugin</artifactId>
- <version>${mavenPluginPluginVersion}</version>
- <configuration>
- <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
-
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
- <descriptor>src/main/assembly/bin.xml</descriptor>
<descriptor>src/main/assembly/src.xml</descriptor>
</descriptors>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-plugin-plugin</artifactId>
- <configuration>
- <!-- see http://jira.codehaus.org/browse/MNG-5346 -->
- <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
- </configuration>
- <executions>
- <execution>
- <id>generate-descriptor</id>
- <goals>
- <goal>descriptor</goal>
- </goals>
- </execution>
- <!-- The generated Mojo does not handle annotations properly,
- and does not show any "User property" names.
- Since this is misleading, it is better to drop the goal
- The Maven Help plugin does show property names, so we create
- our own Help Mojo that extends it.
- <execution>
- <id>generated-helpmojo</id>
- <goals>
- <goal>helpmojo</goal>
- </goals>
- </execution>
- -->
- </executions>
- </plugin>
</plugins>
- </build>
-
- <profiles>
- <!-- This will eventually be merged into the parent pom -->
- <profile>
- <id>release</id>
- <build>
- <plugins>
- <!-- We want to create the assemblies in their own directory -->
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <!-- Stop assemblies from being deployed to Nexus -->
- <attach>false</attach>
- <!-- put them here instead -->
- <outputDirectory>${commons.packages.directory}</outputDirectory>
- </configuration>
- </plugin>
- <!-- Create the hashes -->
- <plugin>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-digest-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>digest</goal>
- </goals>
- <!-- must run after assembly and before deploy -->
- <phase>verify</phase>
- </execution>
- </executions>
- <configuration>
- <includes>
- <include>${commons.packages.directory}/*.zip</include>
- <include>${commons.packages.directory}/*.tar.gz</include>
- </includes>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- <!--
- Temporary helper profile that can be used if gpg and staging plugins are installed locally
- Will eventually be merged int release profile.
- -->
- <profile>
- <id>release-part2</id>
- <build>
- <plugins>
- <!-- Create the signatures -->
- <plugin>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-gpg-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>signfiles</goal>
- </goals>
- <!-- must run after assembly and before deploy -->
- <phase>verify</phase>
- </execution>
- </executions>
- <configuration>
- <includes>
- <include>${commons.packages.directory}/*.zip</include>
- <include>${commons.packages.directory}/*.tar.gz</include>
- </includes>
- </configuration>
- </plugin>
- <!-- Now create the staging scripts-->
- <plugin>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-staging-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>create-scripts</goal>
- </goals>
- <!-- must run after assembly and before deploy -->
- <phase>verify</phase>
- </execution>
- </executions>
- <!-- This needs to be configured for the local project; sample below is for Apache Commons -->
- <configuration>
- <packageDirectory>${commons.packages.directory}</packageDirectory>
- <asfProject>commons</asfProject>
- <asfComponent>${commons.componentid}</asfComponent>
- <stagingDirectory>${commons.release.name}-${commons.rc.version}</stagingDirectory>
- <releaseNotes>RELEASE-NOTES.txt</releaseNotes>
- <!-- safe place for upload and release testing -->
- <rootUrl>https://dist.apache.org/repos/dist/dev/commons/TEST_PLS_IGNORE/</rootUrl>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- </profiles>
+ </build>
</project>
Modified: maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java?rev=1496302&r1=1496301&r2=1496302&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java Tue Jun 25 00:20:09 2013
@@ -19,6 +19,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.security.MessageDigest;
+import java.util.HashSet;
+import java.util.Locale;
import java.util.Set;
import org.apache.commons.codec.binary.Hex;
@@ -63,25 +65,22 @@ public class DigestMojo extends Abstract
* Overrides includes and excludes; uses same syntax as for {@code <include>}
* Patterns are assumed to be relative to the project base directory.
*/
- @Parameter (property="digest.files")
+ @Parameter (property="maven.digest.files")
private String files;
/**
- * Whether to create the MD5 hash, default {@code true}
+ * The list of algorithm names with which to create digests.
+ * If none specified, the default is {@code MD5} and {@code SHA1}.
+ * By default the file extension is assumed to be the algorithm name
+ * converted to lower-case, and any "-" characters removed.
*/
- @Parameter( property = "digest.md5", defaultValue = "true" )
- private boolean createMD5;
-
- /**
- * Whether to create the SHA1 hash, default {@code true}
- */
- @Parameter( property = "digest.sha1", defaultValue = "true" )
- private boolean createSHA1;
+ @Parameter
+ private Set<String> algorithms;
/**
* Whether to append ' *filename' to the hash in the generated file, default {@code false}
*/
- @Parameter( property = "digest.appendFilename", defaultValue = "false" )
+ @Parameter( property = "maven.digest.appendFilename", defaultValue = "false" )
private boolean appendFilename;
public void execute() throws MojoExecutionException {
@@ -90,13 +89,23 @@ public class DigestMojo extends Abstract
if (files.length == 0) {
log.warn("No files found. Please configure at least one <include> item or use -Ddigest.files");
} else {
+ if (algorithms == null || algorithms.size() == 0) {
+ algorithms = new HashSet<String>(2);
+ algorithms.add("MD5");
+ algorithms.add("SHA-1");
+ }
try {
for(String file : files) {
- if (createMD5) {
- createDigest("MD5", ".md5", file);
- }
- if (createSHA1) {
- createDigest("SHA-1", ".sha1", file);
+ for(String algorithm : algorithms) {
+ String[] parts = algorithm.split("|");
+ String extension;
+ if (parts.length == 2) {
+ algorithm = parts[0];
+ extension = parts[1];
+ } else {
+ extension = getExtension(algorithm);
+ }
+ createDigest(algorithm, extension, file);
}
}
} catch (Exception ex) {
@@ -105,6 +114,17 @@ public class DigestMojo extends Abstract
}
}
+ /**
+ * Creates the extension from the algortithm name, by converting to lower-case
+ * and dropping any "-" characters. The result is prefixed with ".".
+ *
+ * @param algorithm the algorithm name
+ * @return the extension, e.g. ".md5", ".sha1"
+ */
+ private String getExtension(String algorithm) {
+ return "." + algorithm.toLowerCase(Locale.ENGLISH).replace("-", "");
+ }
+
private void createDigest(String algorithm, String extension, String file) throws Exception {
FileInputStream is = new FileInputStream(file);
PrintWriter pw = new PrintWriter(file+extension, "UTF-8");
Copied: maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java (from r1496291, maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelpMojo.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java?p2=maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java&p1=maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelpMojo.java&r1=1496291&r2=1496302&rev=1496302&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelpMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java Tue Jun 25 00:20:09 2013
@@ -28,12 +28,12 @@ import org.apache.maven.plugins.help.Des
import org.apache.maven.project.MavenProject;
/**
- * Help Mojo that extends the standard Maven help plugin describe goal.
+ * Helper Mojo that extends the standard Maven help plugin describe goal.
* This is needed because the generated help mojo
* does not handle annotation property names at present.
*/
-@Mojo (name = "help")
-public class HelpMojo extends DescribeMojo {
+@Mojo (name = "helper")
+public class HelperMojo extends DescribeMojo {
@Component
private MavenProject myProject; // Must not use same name as DescribeMojo