You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2009/11/26 15:25:48 UTC
svn commit: r884563 - in
/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement:
AbstractAnnouncementMojo.java AnnouncementMailMojo.java AnnouncementMojo.java
Author: dennisl
Date: Thu Nov 26 14:25:48 2009
New Revision: 884563
URL: http://svn.apache.org/viewvc?rev=884563&view=rev
Log:
[MCHANGES-145] Make it possible to run the announcement goals only once for a multi-module project
Added:
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java (with props)
Modified:
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
Added: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java?rev=884563&view=auto
==============================================================================
--- maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java (added)
+++ maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java Thu Nov 26 14:25:48 2009
@@ -0,0 +1,63 @@
+package org.apache.maven.plugin.announcement;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.execution.MavenSession;
+
+/**
+ * Abstract superclass for announcement mojos.
+ *
+ * @version $Id$
+ * @since 2.3
+ */
+public abstract class AbstractAnnouncementMojo extends AbstractMojo {
+ /**
+ * The current project base directory.
+ *
+ * @parameter expression="${basedir}"
+ * @required
+ * @since 2.1
+ */
+ protected String basedir;
+
+ /**
+ * The Maven Session.
+ *
+ * @parameter expression="${session}"
+ * @readonly
+ * @required
+ * @since 2.3
+ */
+ protected MavenSession mavenSession;
+
+ /**
+ * This will cause the execution to be run only at the top of a given module
+ * tree. That is, run in the project contained in the same folder where the
+ * mvn execution was launched.
+ *
+ * @parameter expression="${announcement.runOnlyAtExecutionRoot}" default-value="false"
+ * @since 2.3
+ */
+ protected boolean runOnlyAtExecutionRoot;
+
+ /**
+ * Returns <code>true</code> if the current project is located at the
+ * Execution Root Directory (where mvn was launched).
+ *
+ * @return <code>true</code> if the current project is at the Execution Root
+ */
+ protected boolean isThisTheExecutionRoot()
+ {
+ getLog().debug( "Root Folder:" + mavenSession.getExecutionRootDirectory() );
+ getLog().debug( "Current Folder:" + basedir );
+ boolean result = mavenSession.getExecutionRootDirectory().equalsIgnoreCase( basedir.toString() );
+ if ( result )
+ {
+ getLog().debug( "This is the execution root." );
+ }
+ else
+ {
+ getLog().debug( "This is NOT the execution root." );
+ }
+ return result;
+ }
+}
Propchange: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Author Id
Modified: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java?rev=884563&r1=884562&r2=884563&view=diff
==============================================================================
--- maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java (original)
+++ maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java Thu Nov 26 14:25:48 2009
@@ -27,7 +27,6 @@
import java.util.List;
import org.apache.maven.model.Developer;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.announcement.mailsender.ProjectJavamailMailSender;
import org.apache.maven.project.MavenProject;
@@ -46,7 +45,7 @@
* @execute goal="announcement-generate"
*/
public class AnnouncementMailMojo
- extends AbstractMojo
+ extends AbstractAnnouncementMojo
{
//=========================================
// announcement-mail goal fields
@@ -154,9 +153,9 @@
* @required
*/
private String template;
-
+
/**
- * Mail content type to use.
+ * Mail content type to use.
* @parameter default-value="text/plain"
* @required
* @since 2.1
@@ -168,49 +167,57 @@
public void execute()
throws MojoExecutionException
{
- File templateFile = new File( templateOutputDirectory, template );
-
- ConsoleLogger logger = new ConsoleLogger( Logger.LEVEL_INFO, "base" );
-
- if ( getLog().isDebugEnabled() )
+ // Run only at the execution root
+ if ( runOnlyAtExecutionRoot && !isThisTheExecutionRoot() )
{
- logger.setThreshold( Logger.LEVEL_DEBUG );
+ getLog().info( "Skipping the announcement mail in this project because it's not the Execution Root" );
}
+ else
+ {
+ File templateFile = new File( templateOutputDirectory, template );
- mailer.enableLogging( logger );
+ ConsoleLogger logger = new ConsoleLogger( Logger.LEVEL_INFO, "base" );
- mailer.setSmtpHost( getSmtpHost() );
+ if ( getLog().isDebugEnabled() )
+ {
+ logger.setThreshold( Logger.LEVEL_DEBUG );
+ }
- mailer.setSmtpPort( getSmtpPort() );
+ mailer.enableLogging( logger );
- mailer.setSslMode( sslMode );
+ mailer.setSmtpHost( getSmtpHost() );
- if ( username != null )
- {
- mailer.setUsername( username );
- }
+ mailer.setSmtpPort( getSmtpPort() );
- if ( password != null )
- {
- mailer.setPassword( password );
- }
-
- mailer.initialize();
-
- if ( getLog().isDebugEnabled() )
- {
- getLog().debug( "fromDeveloperId: " + getFromDeveloperId() );
- }
+ mailer.setSslMode( sslMode );
- if ( templateFile.isFile() )
- {
- getLog().info( "Connecting to Host: " + getSmtpHost() + ":" + getSmtpPort() );
+ if ( username != null )
+ {
+ mailer.setUsername( username );
+ }
- sendMessage();
- }
- else
- {
- throw new MojoExecutionException( "Announcement template " + templateFile + " not found..." );
+ if ( password != null )
+ {
+ mailer.setPassword( password );
+ }
+
+ mailer.initialize();
+
+ if ( getLog().isDebugEnabled() )
+ {
+ getLog().debug( "fromDeveloperId: " + getFromDeveloperId() );
+ }
+
+ if ( templateFile.isFile() )
+ {
+ getLog().info( "Connecting to Host: " + getSmtpHost() + ":" + getSmtpPort() );
+
+ sendMessage();
+ }
+ else
+ {
+ throw new MojoExecutionException( "Announcement template " + templateFile + " not found..." );
+ }
}
}
@@ -238,7 +245,7 @@
mailMsg.setSubject( getSubject() );
mailMsg.setContent( IOUtil.toString( readAnnouncement( templateFile ) ) );
mailMsg.setContentType( this.mailContentType );
- mailMsg.setFrom( fromAddress, fromName );
+ mailMsg.setFrom( fromAddress, fromName );
final Iterator it = getToAddresses().iterator();
while ( it.hasNext() )
{
@@ -248,7 +255,7 @@
}
mailer.send( mailMsg );
- getLog().info( "Sent..." );
+ getLog().info( "Sent..." );
}
catch ( IOException ioe )
{
Modified: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java?rev=884563&r1=884562&r2=884563&view=diff
==============================================================================
--- maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java (original)
+++ maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java Thu Nov 26 14:25:48 2009
@@ -28,7 +28,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.changes.ChangesXML;
import org.apache.maven.plugin.jira.JiraXML;
@@ -55,7 +54,7 @@
* @version $Id$
*/
public class AnnouncementMojo
- extends AbstractMojo
+ extends AbstractAnnouncementMojo
{
private static final String SNAPSHOT_SUFFIX = "-SNAPSHOT";
@@ -173,15 +172,6 @@
*/
private String templateDirectory;
- /**
- * The current project base directory.
- *
- * @parameter expression="${basedir}"
- * @required
- * @since 2.1
- */
- private String basedir;
-
private ChangesXML xml;
//=======================================//
@@ -313,35 +303,43 @@
public void execute()
throws MojoExecutionException
{
- if ( this.jiraMerge )
+ // Run only at the execution root
+ if ( runOnlyAtExecutionRoot && !isThisTheExecutionRoot() )
{
- ChangesXML changesXML = new ChangesXML( getXmlPath(), getLog() );
- List changesReleases = changesXML.getReleaseList();
- List jiraReleases = getJiraReleases();
- List mergedReleases = mergeReleases( changesReleases, jiraReleases );
- doGenerate( mergedReleases );
+ getLog().info( "Skipping the announcement generation in this project because it's not the Execution Root" );
}
else
{
- if ( !generateJiraAnnouncement )
+ if ( this.jiraMerge )
+ {
+ ChangesXML changesXML = new ChangesXML( getXmlPath(), getLog() );
+ List changesReleases = changesXML.getReleaseList();
+ List jiraReleases = getJiraReleases();
+ List mergedReleases = mergeReleases( changesReleases, jiraReleases );
+ doGenerate( mergedReleases );
+ }
+ else
{
- if ( getXmlPath().exists() )
+ if ( !generateJiraAnnouncement )
{
- setXml( new ChangesXML( getXmlPath(), getLog() ) );
-
- getLog().info( "Creating announcement file from " + getXmlPath() + "..." );
-
- doGenerate( getXml().getReleaseList() );
+ if ( getXmlPath().exists() )
+ {
+ setXml( new ChangesXML( getXmlPath(), getLog() ) );
+
+ getLog().info( "Creating announcement file from " + getXmlPath() + "..." );
+
+ doGenerate( getXml().getReleaseList() );
+ }
+ else
+ {
+ getLog().warn( "changes.xml file " + getXmlPath().getAbsolutePath() + " does not exist." );
+ }
}
else
{
- getLog().warn( "changes.xml file " + getXmlPath().getAbsolutePath() + " does not exist." );
+ doJiraGenerate();
}
}
- else
- {
- doJiraGenerate();
- }
}
}