You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2013/06/18 04:29:08 UTC

svn commit: r1493988 - in /commons/sandbox/commons-staging-plugin/trunk: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/commons/ src/main/java/org/apache/commons/plugins/ src/main/java/org/apache/...

Author: sebb
Date: Tue Jun 18 02:29:08 2013
New Revision: 1493988

URL: http://svn.apache.org/r1493988
Log:
Initial commit of staging plugin
TODO: change performExec default?

Added:
    commons/sandbox/commons-staging-plugin/trunk/pom.xml   (with props)
    commons/sandbox/commons-staging-plugin/trunk/src/
    commons/sandbox/commons-staging-plugin/trunk/src/main/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java   (with props)
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java   (with props)
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java   (with props)
    commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java   (with props)
Modified:
    commons/sandbox/commons-staging-plugin/trunk/   (props changed)

Propchange: commons/sandbox/commons-staging-plugin/trunk/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Jun 18 02:29:08 2013
@@ -0,0 +1 @@
+target

Added: commons/sandbox/commons-staging-plugin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/commons-staging-plugin/trunk/pom.xml?rev=1493988&view=auto
==============================================================================
--- commons/sandbox/commons-staging-plugin/trunk/pom.xml (added)
+++ commons/sandbox/commons-staging-plugin/trunk/pom.xml Tue Jun 18 02:29:08 2013
@@ -0,0 +1,169 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+<!-- 
+  <parent>
+    <groupId>org.apache.commons</groupId>
+    <artifactId>commons-parent</artifactId>
+    <version>30</version>
+  </parent>
+ -->
+ 
+  <groupId>org.apache.commons</groupId>
+  <artifactId>commons-staging-plugin</artifactId>
+  <packaging>maven-plugin</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>Apache commons-staging-plugin Maven Mojo</name>
+  <url>http://maven.apache.org</url>
+
+  <description>
+  This Apache Commons plugin for Maven provides goals for staging
+  tarballs - source and binary packages for distribution via
+  the ASF mirroring system.
+  </description>
+
+  <prerequisites>
+    <maven>${mavenVersion}</maven>
+  </prerequisites>
+
+   <properties>
+    <mavenVersion>2.2.1</mavenVersion>
+    <mavenPluginPluginVersion>3.2</mavenPluginPluginVersion>
+    <maven.compile.source>1.5</maven.compile.source>
+    <maven.compile.target>1.5</maven.compile.target>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <!-- 1.6 only requres Java 1.5 -->
+      <version>1.6</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>${mavenVersion}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-container-default</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>${mavenPluginPluginVersion}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>3.0.7</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-container-default</artifactId>
+      <version>1.0-alpha-9</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.plexus</groupId>
+      <artifactId>plexus-sec-dispatcher</artifactId>
+      <version>1.4</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-plugin-plugin</artifactId>
+          <version>${mavenPluginPluginVersion}</version>
+          <configuration>
+            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.1</version>
+          <configuration>
+            <source>${maven.compile.source}</source>
+            <target>${maven.compile.target}</target>
+            <encoding>${commons.encoding}</encoding>
+            <!-- 
+            <fork>${commons.compiler.fork}</fork>
+            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>
+            <executable>${commons.compiler.javac}</executable>
+             -->
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-metadata</artifactId>
+          <version>1.5.5</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-component-metadata</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate-metadata</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <configuration>
+          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+        </configuration>
+        <executions>
+          <execution>
+            <id>generate-descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>generated-helpmojo</id>
+            <goals>
+              <goal>helpmojo</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: commons/sandbox/commons-staging-plugin/trunk/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java
URL: http://svn.apache.org/viewvc/commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java?rev=1493988&view=auto
==============================================================================
--- commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java (added)
+++ commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java Tue Jun 18 02:29:08 2013
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.commons.plugins.staging;
+
+import java.io.File;
+import java.io.InputStream;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.settings.Server;
+import org.apache.maven.settings.Settings;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.DefaultConsumer;
+import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
+
+public abstract class AbstractExecMojo  extends AbstractMojo  implements Contextualizable {
+
+    @Component
+    private Settings settings;
+
+    @Parameter (property="staging.rootUrl", defaultValue="https://dist.apache.org/repos/dist/", required=true)
+    private String rootUrl;
+    
+    @Parameter (property="staging.serverName", required=false)
+    private String serverName;
+
+    @Parameter (property="staging.releaseId", required=true)
+    private String releaseId;
+
+    @Parameter (property="staging.performExec", defaultValue="false", required=false)
+    private boolean performExec;
+
+    /**
+     * Where to find the packages for upload
+     */
+    @Parameter( defaultValue = "${project.build.directory}/packages", property="staging.packageDirectory", required=true )
+    private File packageDirectory;
+
+    // @Component does not work for the container
+    private PlexusContainer container;
+
+    // Canonical way to get the container
+    public void contextualize( Context context ) throws ContextException {  
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+    }
+
+    private boolean isNonEmpty(String s) {
+        return s != null && s.trim().length() > 0;
+    }
+
+    public void exec(final String scriptName) throws MojoExecutionException {
+        Log log = getLog();
+        final File script = new File(packageDirectory, scriptName);
+        if (!script.isFile()) {
+            throw new MojoExecutionException("Cannot find script file "+script);
+        }
+        final String message = (scriptName.equals(CreateScriptMojo.SVMNUCC_RELEASE) ? "Releasing " : "Uploading ")
+                + releaseId;
+        log.info(message+ " using " + script.toString());
+        Commandline cmd = new Commandline();
+        cmd.setExecutable( "svnmucc" );
+        
+        cmd.createArg().setValue( "--non-interactive" );
+        cmd.createArg().setValue( "--no-auth-cache" );
+        cmd.createArg().setValue( "--message" );
+        cmd.createArg().setValue( message  );
+        cmd.createArg().setValue( "--root-url" );
+        cmd.createArg().setValue( rootUrl );
+        // Can move path segments between script and URL if required
+        // Of course that won't work for move between dev and release
+        cmd.createArg().setValue( "--extra-args" );
+        cmd.createArg().setFile( script );
+        cmd.createArg().setValue( "--username" );
+        String cmdLine;
+        if (isNonEmpty(serverName)) {
+            log.warn("Using authentication from settings.xml: " + serverName);
+            final Server server = settings.getServer(serverName);
+            if (server == null) {
+                throw new MojoExecutionException("Could not find server name " + serverName);
+            }
+            cmd.createArg().setValue( server.getUsername() );
+            cmd.createArg().setValue( "--password" );
+            cmdLine = cmd.toString();
+            try {
+                final SecDispatcher sd = (SecDispatcher) container.lookup( SecDispatcher.ROLE, "maven" );
+                cmd.createArg().setValue( sd.decrypt( server.getPassword() ) );
+            } catch (Exception e) {
+                throw new MojoExecutionException("Failed to decode password", e);
+            }
+        } else {
+            cmdLine = cmd.toString();
+        }
+        log.debug(cmdLine);
+        if (!performExec) {
+            log.warn("Command execution has been skipped; no action taken");
+            return;
+        }
+        try
+        {
+            final InputStream in = null; // svnmucc does not currently accept password from stdin
+            int exitCode = CommandLineUtils.executeCommandLine( cmd, in, new DefaultConsumer(), new DefaultConsumer() );
+
+            if ( exitCode != 0 )
+            {
+                throw new MojoExecutionException( "Exit code: " + exitCode );
+            }
+        }
+        catch ( CommandLineException e )
+        {
+            throw new MojoExecutionException( "Unable to execute svnmucc command", e );
+        }
+    }
+}

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/AbstractExecMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java
URL: http://svn.apache.org/viewvc/commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java?rev=1493988&view=auto
==============================================================================
--- commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java (added)
+++ commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java Tue Jun 18 02:29:08 2013
@@ -0,0 +1,167 @@
+/*
+ * 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 org.apache.commons.plugins.staging;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+/**
+ * Creates svnmucc "upload" and "release" scripts from the files found in the packages directory.
+ * <p>
+ * The files are uploaded to<br>
+ * dev/project/stagingDirectory (e.g. dev/commons/commons-lang-1.2-RC3).<br>
+ * The release notes are stored in the directory as above.<br>
+ * Files that contain -src in their name are staged to /source, the rest are staged to binaries/.
+ * <p>
+ * For the release script, files are moved from<br>
+ * dev/project/stagingDirectory to<br>
+ * release/project/[component/]
+ */
+@Mojo( name = "create-scripts")
+public class CreateScriptMojo extends AbstractMojo {
+
+    public static final String SVMNUCC_RELEASE = "svnmucc_release.txt";
+
+    public static final String SVMNUCC_UPLOAD = "svnmucc_upload.txt";
+
+    /**
+     * File name patterns which are to be ignored: {@value}
+     */
+    private static final String IGNORE = "svnmucc_.*\\.txt";
+
+    /**
+     * The top-level project name (as used in ASF dist repository) for the packages
+     */
+    @Parameter( property="staging.project", required=true)
+    private String project;
+
+    /**
+     * The staging directory name within the project (e.g. commons-lang-1.2-RC3)
+     */
+    @Parameter( property="staging.directory", required=true)
+    private String stagingDirectory;
+    
+    /**
+     * The component name within the project package (for release folder); may be empty
+     */
+    @Parameter( property="staging.component", required=false)
+    private String component;
+    
+    /**
+     * Where to find the packages for upload.
+     * Aall files are selected for upload apart from those named svnmucc_*.txt.
+     */
+    @Parameter( defaultValue = "${project.build.directory}/packages", property="staging.packageDirectory", required=true )
+    private File packageDirectory;
+
+    /**
+     * Path to the release notes (e.g. RELEASE-NOTES.txt)
+     */
+    @Parameter( property="staging.releaseNotes" )
+    private File releaseNotes;
+
+    public void execute() throws MojoExecutionException {
+        final Log log = getLog();
+        log.info("package directory: " + packageDirectory);
+        File files[] = packageDirectory.listFiles(new FileFilter() {
+            public boolean accept(File pathname) {
+                if (pathname.isFile()) {
+                    String name = pathname.getName();
+                    return !name.matches(IGNORE);
+                } else {
+                    return false;
+                }
+            }
+        });
+        if (files == null) {
+            log.warn("The package directory does not exist: " + packageDirectory);
+        } else if (files.length == 0) {
+            log.warn("The package directory is empty: " + packageDirectory);
+        } else {
+            if (releaseNotes != null) { // this is for the top-level directory
+                if (!releaseNotes.exists()) {
+                    throw new MojoExecutionException("Could not find " + releaseNotes);
+                }
+            }
+            final String stagingDir = "dev/" + project + "/" + stagingDirectory;
+            log.info("staging directory: " + stagingDir);
+            final String releaseDir = 
+                    "release/" + project + (component != null && component.length() > 0 ? "/" + component : "");
+            log.info("release directory: " + releaseDir);
+            try {
+                final PrintWriter staging = new PrintWriter(new File(packageDirectory, SVMNUCC_UPLOAD), "UTF-8");
+                final PrintWriter release = new PrintWriter(new File(packageDirectory, SVMNUCC_RELEASE), "UTF-8");
+
+                // Create the top-level dir; if this fails it means we've already uploaded
+                // This is deliberate to avoid replacing files
+                staging.println("mkdir");
+                staging.println(stagingDir);
+                staging.println();
+
+                staging.println("mkdir");
+                staging.print(stagingDir);
+                staging.println("/binaries");
+                staging.println();
+                
+                staging.println("mkdir");
+                staging.print(stagingDir);
+                staging.println("/source");
+                staging.println();
+
+                if (releaseNotes != null) { // this is for the top-level directory
+                    createEntry(stagingDir, releaseDir, staging, release, releaseNotes, "");                    
+                }
+
+                for(File file : files) {
+                    final String name = file.getName();
+                    final String subDir = (name.contains("-src") ? "source/" : "binaries/");
+                    createEntry(stagingDir, releaseDir, staging, release, file, subDir);
+                }
+                staging.close();
+                release.close();
+            } catch (IOException e) {
+                throw new MojoExecutionException("Failed to create the script", e);
+            }
+        }
+    }
+
+    private void createEntry(final String stagingDir, final String releaseDir,
+            final PrintWriter staging, final PrintWriter release, final File file,
+            final String subdirPathElement) {
+        // Put the file to the staging area
+        final String stageName = stagingDir + "/" + subdirPathElement + file.getName();
+        staging.println("put");
+        staging.println(file);
+
+        staging.println(stageName);
+        staging.println();
+
+        // Release the file
+        final String finalName = releaseDir  + "/" + subdirPathElement + file.getName();
+        release.println("mv");
+        release.println(stageName);
+        release.println(finalName);
+        release.println();
+    }
+
+}

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/CreateScriptMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java
URL: http://svn.apache.org/viewvc/commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java?rev=1493988&view=auto
==============================================================================
--- commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java (added)
+++ commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java Tue Jun 18 02:29:08 2013
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.commons.plugins.staging;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+
+@Mojo( name = "release")
+public class ReleaseMojo  extends AbstractExecMojo {
+
+    public void execute() throws MojoExecutionException {
+        exec(CreateScriptMojo.SVMNUCC_RELEASE);
+    }
+}

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/ReleaseMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java
URL: http://svn.apache.org/viewvc/commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java?rev=1493988&view=auto
==============================================================================
--- commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java (added)
+++ commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java Tue Jun 18 02:29:08 2013
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.commons.plugins.staging;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+
+@Mojo( name = "upload")
+public class UploadMojo  extends AbstractExecMojo {
+
+    public void execute() throws MojoExecutionException {
+        exec(CreateScriptMojo.SVMNUCC_UPLOAD);
+    }
+}

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/commons-staging-plugin/trunk/src/main/java/org/apache/commons/plugins/staging/UploadMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision