Author: tchemit Date: 2012-07-12 18:53:52 +0200 (Thu, 12 Jul 2012) New Revision: 844 Url: http://nuiton.org/repositories/revision/maven-helper-plugin/844 Log: fixes #925: Use maven-plugin-plugin 3 api Modified: trunk/src/main/java/org/nuiton/helper/plugin/CheckAutoContainerPlugin.java trunk/src/main/java/org/nuiton/helper/plugin/CollectFilesMojo.java trunk/src/main/java/org/nuiton/helper/plugin/ExecuteRemoteCommandMojo.java trunk/src/main/java/org/nuiton/helper/plugin/SendEmailMojo.java trunk/src/main/java/org/nuiton/helper/plugin/ShareServerSecretPlugin.java Modified: trunk/src/main/java/org/nuiton/helper/plugin/CheckAutoContainerPlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/helper/plugin/CheckAutoContainerPlugin.java 2012-07-09 10:20:16 UTC (rev 843) +++ trunk/src/main/java/org/nuiton/helper/plugin/CheckAutoContainerPlugin.java 2012-07-12 16:53:52 UTC (rev 844) @@ -37,6 +37,11 @@ import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.logging.Log; +import org.apache.maven.plugins.annotations.Component; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Proxy; import org.apache.maven.wagon.ConnectionException; @@ -59,13 +64,9 @@ * * @author tchemit <chemit@codelutin.com> * @version $Id$ - * @goal check-auto-container - * @phase validate - * @requiresProject true - * @requiresOnline true - * @requiresDependencyResolution runtime * @since 1.2.5 */ +@Mojo(name = "check-auto-container", defaultPhase = LifecyclePhase.VALIDATE, requiresProject = true, requiresOnline = true, requiresDependencyResolution = ResolutionScope.RUNTIME) public class CheckAutoContainerPlugin extends AbstractPlugin { /** @@ -73,34 +74,34 @@ * <p/> * Keys are repository id and Values are repository url. * - * @parameter * @since 1.2.5 */ + @Parameter protected Map<String, String> repositories; /** * A flag to add the maven central repository http://repo1.maven.org/maven2 * to {@link #repositories}. * - * @parameter expression="${addMavenCentral}" default-value="false" * @since 1.2.5 */ + @Parameter(property = "addMavenCentral", defaultValue = "false") protected boolean addMavenCentral; /** * A flag to fail if project is not auto container. * - * @parameter expression="${helper.failIfNotSafe}" default-value="false" * @since 1.2.5 */ + @Parameter(property = "helper.failIfNotSafe", defaultValue = "false") protected boolean failIfNotSafe; /** * A flag to activate verbose mode. * - * @parameter expression="${helper.verbose}" default-value="${maven.verbose}" * @since 1.2.5 */ + @Parameter(property = "helper.verbose", defaultValue = "${maven.verbose}") protected boolean verbose; /** @@ -109,88 +110,73 @@ * <b>Note:</b> By default, value is {@code true} since it is not necessary * to check twice for a same artifact. * - * @parameter expression="${helper.runOnce}" default-value="true" * @since 1.2.6 */ + @Parameter(property = "helper.runOnce", defaultValue = "true") protected boolean runOnce; /** * Project. * - * @parameter default-value="${project}" - * @required - * @readonly * @since 1.2.5 */ + @Component protected MavenProject project; /** * The projects in reactor (used to detected sibling dependencies). * - * @parameter expression="${reactorProjects}" - * @readonly * @since 1.2.5 */ + @Parameter(property = "reactorProjects", readonly = true) protected List<?> reactorProjects; /** * Active proxy from settings (if any). * - * @parameter default-value="${settings.activeProxy}" - * @required - * @readonly * @since 1.2.5 */ + @Parameter(property = "settings.activeProxy", required = true, readonly = true) protected Proxy proxy; /** * Local repository. * - * @parameter expression="${localRepository}" - * @required - * @readonly * @since 1.2.5 */ + @Parameter(property = "localRepository", required = true, readonly = true) protected ArtifactRepository localRepository; /** * Artifact repository factory component. * - * @component - * @required - * @readonly * @since 1.2.5 */ + @Component protected ArtifactRepositoryFactory artifactRepositoryFactory; /** * Artifact factory component. * - * @component - * @required - * @readonly * @since 1.2.5 */ + @Component protected ArtifactFactory factory; /** * Artifact resolver component. * - * @component - * @required - * @readonly * @since 1.2.5 */ + @Component protected ArtifactResolver resolver; /** * Wagon manager component. * - * @component - * @required - * @readonly * @since 1.2.5 */ + @Component protected WagonManager wagonManager; /** Modified: trunk/src/main/java/org/nuiton/helper/plugin/CollectFilesMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/helper/plugin/CollectFilesMojo.java 2012-07-09 10:20:16 UTC (rev 843) +++ trunk/src/main/java/org/nuiton/helper/plugin/CollectFilesMojo.java 2012-07-12 16:53:52 UTC (rev 844) @@ -25,11 +25,15 @@ package org.nuiton.helper.plugin; +import org.apache.commons.lang3.StringUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugins.annotations.Component; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.nuiton.plugin.AbstractPlugin; import org.nuiton.plugin.PluginHelper; @@ -46,69 +50,57 @@ * Collect files some files from a project and copy them into a directory. * * @author tchemit <chemit@codelutin.com> - * @goal collect-files - * @requiresProject true * @since 1.1.0 */ +@Mojo(name = "collect-files", requiresProject = true) public class CollectFilesMojo extends AbstractPlugin implements PluginWithEncoding { /** * The projects in the reactor. * - * @parameter expression="${reactorProjects}" - * @readonly * @since 1.2.4 */ + @Parameter(property = "reactorProjects", readonly = true, required = true) protected List<?> reactorProjects; /** * Fallback maven project (for maven 2). * - * @parameter default-value="${project}" - * @required - * @readonly * @since 1.0.3 */ + @Component protected MavenProject project; /** * The artifacts to publish from the project build. * - * @parameter expression="${project.attachedArtifacts}" - * @required - * @readonly * @since 1.0.0 */ + @Parameter(property = "project.attachedArtifacts", readonly = true, required = true) protected List<?> attachedArtifacts; /** * The local repository. * - * @parameter expression="${localRepository}" - * @required - * @readonly * @since 1.2.2 */ + @Parameter(property = "localRepository", readonly = true, required = true) protected ArtifactRepository localRepository; /** * The remote repository. * - * @parameter expression="${project.distributionManagementArtifactRepository}" - * @required - * @readonly * @since 1.2.2 */ + @Parameter(property = "project.distributionManagementArtifactRepository", readonly = true, required = true) protected ArtifactRepository deploymentRepository; /** * Project artifact. * - * @parameter expression="${project.artifact}" - * @required - * @readonly * @since 1.2.2 */ + @Parameter(property = "project.artifact", readonly = true, required = true) protected Artifact artifact; /** @@ -116,9 +108,9 @@ * <p/> * Multi values can be used, separated by comma. * - * @parameter expression="${helper.extraFiles}" * @since 1.0.0 */ + @Parameter(property = "helper.extraFiles") protected String extraFiles; /** @@ -126,9 +118,9 @@ * <p/> * If no Set - no include filter * - * @parameter expression="${helper.includes}" default-value="" * @since 1.0.0 */ + @Parameter(property = "helper.includes", defaultValue = "") protected String includes; /** @@ -136,9 +128,9 @@ * <p/> * If no Set - no exclude filter * - * @parameter expression="${helper.excludes}" default-value="" * @since 1.0.0 */ + @Parameter(property = "helper.excludes", defaultValue = "") protected String excludes; /** @@ -148,9 +140,9 @@ * the property of the root module, because we need to push collected files * to only one place. * - * @parameter expression="${helper.outputDirectory}" default-value="target/collect" * @since 1.0.0 */ + @Parameter(property = "helper.outputDirectory", defaultValue = "target/collect") protected String outputDirectory; /** @@ -158,66 +150,65 @@ * <p/> * <b>Note :</b> If not Set, will not generate the description file. * - * @parameter expression="${helper.descriptionFile}" * @since 1.0.0 */ + @Parameter(property = "helper.descriptionFile") protected String descriptionFile; /** * Un flag pour collecter aussi les fichiers attaches au projet. * - * @parameter expression="${helper.includeAttached}" default-value="true" * @since 1.0.0 */ + @Parameter(property = "helper.includeAttached", defaultValue = "true") protected boolean includeAttached; /** * Un flag pour collecter aussi les fichiers des sites attaches au projet. * - * @parameter expression="${helper.includeSiteAttached}" default-value="false" * @since 1.2.2 */ + @Parameter(property = "helper.includeSiteAttached", defaultValue = "false") protected boolean includeSiteAttached; /** * Un flag pour recopier les fichiers collectés. * - * @parameter expression="${helper.copyFiles}" default-value="true" * @since 1.0.0 */ + @Parameter(property = "helper.copyFiles", defaultValue = "true") protected boolean copyFiles; /** * Un flag pour activer le mode verbeux. * - * @parameter expression="${helper.verbose}" default-value="${maven.verbose}" * @since 1.0.0 */ + @Parameter(property = "helper.verbose", defaultValue = "${maven.verbose}") protected boolean verbose; /** * A flag to skip the goal. * - * @parameter expression="${helper.skip}" default-value="false" * @since 1.0.0 */ + @Parameter(property = "helper.skip", defaultValue = "false") protected boolean skip; /** * Un flag pour activer le mode verbeux. * - * @parameter expression="${helper.dryRun}" default-value="false" * @since 1.0.0 */ + @Parameter(property = "helper.dryRun", defaultValue = "false") protected boolean dryRun; /** * Encoding a utiliser pour lire et ecrire les fichiers. * - * @parameter expression="${helper.encoding}" default-value="${project.build.sourceEncoding}" - * @required * @since 1.0.0 */ + @Parameter(property = "helper.encoding", defaultValue = "${project.build.sourceEncoding}", required = true) protected String encoding; /** Files to collect */ @@ -293,7 +284,7 @@ boolean withDescriptionFile = false; - if (descriptionFile != null && !descriptionFile.trim().isEmpty()) { + if (StringUtils.isNotBlank(descriptionFile)) { description = new File(rootProject.getBasedir(), descriptionFile); @@ -389,11 +380,9 @@ protected List<File> getFiles() { - Pattern includePattern = includes == null || - includes.trim().isEmpty() ? null : + Pattern includePattern = StringUtils.isBlank(includes) ? null : Pattern.compile(includes.trim()); - Pattern excludePattern = excludes == null || - excludes.trim().isEmpty() ? null : + Pattern excludePattern = StringUtils.isBlank(excludes) ? null : Pattern.compile(excludes.trim()); List<File> result = new ArrayList<File>(); @@ -423,7 +412,7 @@ // attach extra files - if (extraFiles != null && !extraFiles.trim().isEmpty()) { + if (StringUtils.isNotBlank(extraFiles)) { File basedir = project.getBasedir(); for (String path : extraFiles.split(",")) { Modified: trunk/src/main/java/org/nuiton/helper/plugin/ExecuteRemoteCommandMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/helper/plugin/ExecuteRemoteCommandMojo.java 2012-07-09 10:20:16 UTC (rev 843) +++ trunk/src/main/java/org/nuiton/helper/plugin/ExecuteRemoteCommandMojo.java 2012-07-12 16:53:52 UTC (rev 844) @@ -24,10 +24,14 @@ */ package org.nuiton.helper.plugin; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.maven.artifact.manager.WagonManager; 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.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Server; @@ -45,82 +49,54 @@ * Mojo to execute on a remote server some scripts. * * @author tchemit <chemit@codelutin.com> - * @goal execute-remote-command - * @phase validate - * @requiresProject true - * @requiresOnline true * @since 1.3.1 */ +@Mojo(name = "execute-remote-command", defaultPhase = LifecyclePhase.VALIDATE, + requiresOnline = true, requiresProject = true) public class ExecuteRemoteCommandMojo extends AbstractPlugin { - /** - * A flag to activate verbose mode. - * - * @parameter expression="${helper.verbose}" default-value="${maven.verbose}" - */ + /** A flag to activate verbose mode. */ + @Parameter(property = "helper.verbose", defaultValue = "${maven.verbose}") protected boolean verbose; - /** - * Project. - * - * @parameter default-value="${project}" - * @required - * @readonly - */ + /** Project. */ + @Component protected MavenProject project; - /** - * Active proxy from settings (if any). - * - * @parameter default-value="${settings.activeProxy}" - * @required - * @readonly - */ + /** Active proxy from settings (if any). */ + @Parameter(defaultValue = "${settings.activeProxy}", required = true, readonly = true) protected Proxy proxy; /** * Settings. * - * @parameter default-value="${settings}" - * @required - * @readonly * @since 1.1.0 */ + @Component protected Settings settings; /** * Id of the server to use to obtain user login. * <p/> * Must be found in your settings.xml. - * - * @parameter expression="${helper.repositoryId}" - * @required */ + @Parameter(property = "helper.repositoryId", required = true) protected String repositoryId; /** * Url where to execute script. * <p/> * The url must contains the wagon protocol (says scp:... or scpexe:...). - * - * @parameter expression="${helper.repositoryUrl}" - * @required */ + @Parameter(property = "helper.repositoryUrl", required = true) protected String repositoryUrl; - /** - * Command to execute on remote server. - * - * @parameter expression="${helper.command}" - * @required - */ + /** Command to execute on remote server. */ + @Parameter(property = "helper.command", required = true) protected String command; - /** - * Wagon manager component. - * - * @component - */ + /** Wagon manager component. */ + @Component protected WagonManager wagonManager; private CommandExecutor commandExecutor; @@ -145,7 +121,7 @@ if (server == null) { throw new MojoExecutionException( "Could not find server with id '" + repositoryId + - "', check your settings.xml file."); + "', check your settings.xml file."); } Repository repository = new Repository(repositoryId, repositoryUrl); @@ -157,7 +133,7 @@ throw new MojoExecutionException( "The wagon " + wagon + " is not a command executor, " + - "will not be able to execute command."); + "will not be able to execute command."); } commandExecutor = (CommandExecutor) wagon; Modified: trunk/src/main/java/org/nuiton/helper/plugin/SendEmailMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/helper/plugin/SendEmailMojo.java 2012-07-09 10:20:16 UTC (rev 843) +++ trunk/src/main/java/org/nuiton/helper/plugin/SendEmailMojo.java 2012-07-12 16:53:52 UTC (rev 844) @@ -25,9 +25,12 @@ package org.nuiton.helper.plugin; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.maven.model.Developer; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.annotations.Component; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.console.ConsoleLogger; @@ -46,89 +49,81 @@ * Send a email. * * @author tchemit <chemit@codelutin.com> - * @goal send-email - * @requiresOnline true - * @requiresProject true * @since 1.0.3 */ +@Mojo(name = "send-email", requiresOnline = true, requiresProject = true) public class SendEmailMojo extends AbstractPlugin implements PluginWithEncoding { /** * Dependance du projet. * - * @parameter default-value="${project}" - * @required - * @readonly * @since 1.0.3 */ + @Component protected MavenProject project; /** * Un flag pour activer le mode verbeux. * - * @parameter expression="${helper.verbose}" default-value="${maven.verbose}" * @since 1.0.3 */ + @Parameter(property = "helper.verbose", defaultValue = "${maven.verbose}") protected boolean verbose; /** * The Velocity template used to format the email announcement. * - * @parameter expression="${helper.emailContentFile}" - * @required * @since 1.0.3 */ + @Parameter(property = "helper.emailContentFile", required = true) protected File emailContentFile; /** * The title of the email to send. * - * @parameter expression="${helper.emailTitle}" - * @required * @since 1.0.3 */ + @Parameter(property = "helper.emailTitle", required = true) protected String emailTitle; /** * Smtp Server. * - * @parameter expression="${helper.smtpHost}" - * @required * @since 1.0.3 */ + @Parameter(property = "helper.smtpHost", required = true) protected String smtpHost; /** * Port. * - * @parameter default-value="25" expression="${helper.smtpPort}" - * @required * @since 1.0.3 */ + @Parameter(property = "helper.smtpPort", defaultValue = "25", required = true) protected int smtpPort; /** * The username used to send the email. * - * @parameter expression="${helper.username}" * @since 1.0.3 */ + @Parameter(property = "helper.username") protected String username; /** * The password used to send the email. * - * @parameter expression="${helper.password}" * @since 1.0.3 */ + @Parameter(property = "helper.password") protected String password; /** * If the email should be sent in SSL mode. * - * @parameter default-value="false" expression="${helper.sslMode}" * @since 1.0.3 */ + @Parameter(property = "helper.sslMode", defaultValue = "false") protected boolean sslMode; /** @@ -138,78 +133,74 @@ * developer is not found, then the first developer in the pom will be * used. * - * @parameter expression="${helper.fromDeveloperId}" * @since 1.0.3 */ + @Parameter(property = "helper.fromDeveloperId") protected String fromDeveloperId; /** * Defines the sender of the announcement if the list of developer is empty * or if the sender is not a member of the development team. * - * @parameter expression="${helper.mailSender}" * @since 1.0.3 */ + @Parameter(property = "helper.mailSender") protected MailSender mailSender; /** * Recipient email address. * - * @parameter - * @required * @since 1.0.3 */ + @Parameter(required = true) protected List<String> toAddresses; /** * Possible senders. * - * @parameter expression="${project.developers}" - * @required - * @readonly * @since 1.0.3 */ + @Parameter(property = "project.developers", required = true, readonly = true) protected List<Developer> from; /** * Mail content type to use. * - * @parameter default-value="text/plain" - * @required * @since 1.0.3 */ + @Parameter(defaultValue = "text/plain", required = true) protected String mailContentType; /** * The encoding used to read and write files. * - * @parameter expression="${helper.encoding}" default-value="${project.build.sourceEncoding}" * @since 1.0.3 */ + @Parameter(property = "helper.encoding", defaultValue = "${project.build.sourceEncoding}") protected String encoding; /** * A flag to skip the goal. * - * @parameter expression="${helper.skipSendEmail}" default-value="false" * @since 1.0.3 */ + @Parameter(property = "helper.skipSendEmail", defaultValue = "false") protected boolean skipSendEmail; /** * A flag to test plugin but send nothing to redmine. * - * @parameter expression="${dryRun}" default-value="false" * @since 1.0.3 */ + @Parameter(property = "dryRun", defaultValue = "false") protected boolean dryRun; /** * A flag to restirct only one run in a build (for multi-module context). * - * @parameter expression="${redmine.runOnce}" default-value="true" * @since 1.0.3 */ + @Parameter(property = "redmine.runOnce", defaultValue = "true") protected boolean runOnce; /** Modified: trunk/src/main/java/org/nuiton/helper/plugin/ShareServerSecretPlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/helper/plugin/ShareServerSecretPlugin.java 2012-07-09 10:20:16 UTC (rev 843) +++ trunk/src/main/java/org/nuiton/helper/plugin/ShareServerSecretPlugin.java 2012-07-12 16:53:52 UTC (rev 844) @@ -25,8 +25,12 @@ package org.nuiton.helper.plugin; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.annotations.Component; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Server; import org.apache.maven.settings.Settings; @@ -51,50 +55,47 @@ * </pre> * * @author tchemit <chemit@codelutin.com> - * @goal share-server-secret - * @phase initialize - * @requiresProject true * @since 1.1.0 */ +@Mojo(name = "share-server-secret", defaultPhase = LifecyclePhase.INITIALIZE, requiresProject = true) public class ShareServerSecretPlugin extends AbstractPlugin { /** * Project. * - * @parameter default-value="${project}" - * @required - * @readonly * @since 1.1.0 */ + @Component protected MavenProject project; + /** * Settings. * - * @parameter default-value="${settings}" - * @required - * @readonly * @since 1.1.0 */ + @Component protected Settings settings; + /** * Server id to use for authentication (must be defined in your setting * and use the maven >= 2.1.0 password encryption mecanism). * <p/> * - * @parameter expression="${helper.serverId}" - * @required * @since 1.1.0 */ + @Parameter(property = "helper.serverId", required = true) protected String serverId; + /** * The name of the property where to export the username of the server. * <p/> * <b>Note:</b> If not set - then no export of the username of the server. * - * @parameter * @since 1.1.0 */ + @Parameter protected String usernameOut; + /** * The name of the property where to export the password of the server. * <p/> @@ -103,10 +104,11 @@ * <b>Note:</b> If the password is crypted (since maven 2.1.0) then * decrypt it. * - * @parameter * @since 1.1.0 */ + @Parameter protected String passwordOut; + /** * The name of the property where to export the passphrase of the server. * <p/> @@ -115,50 +117,52 @@ * <b>Note:</b> If the passphrase is crypted (since maven 2.1.0) then * decrypt it. * - * @parameter * @since 1.1.0 */ + @Parameter protected String passphraseOut; + /** * The name of the property where to export the private key of the server. * <p/> * <b>Note:</b> If not set - then no export of the private key of the server. * - * @parameter * @since 1.1.0 */ + @Parameter protected String privateKeyOut; + /** * A flag to activate verbose mode. * - * @parameter expression="${helper.verbose}" default-value="${maven.verbose}" * @since 1.1.0 */ + @Parameter(property = "helper.verbose", defaultValue = "${maven.verbose}") protected boolean verbose; + /** * A flag to execute only once the mojo. * <p/> * <b>Note:</b> By default, value is {@code true} since it is not necessary * to inject twice secrets in session. * - * @parameter expression="${helper.runOnce}" default-value="true" * @since 1.1.0 */ + @Parameter(property = "helper.runOnce", defaultValue = "true") protected boolean runOnce; + /** * password decypher * - * @component roleHint="maven-helper-plugin" * @since 1.1.0 */ + @Component(hint = "maven-helper-plugin") protected SecDispatcher sec; - /** - * the server to use to obtain secrets - */ + + /** the server to use to obtain secrets */ private Server server; - /** - * server secrets to expose - */ + + /** server secrets to expose */ private Map<Property, String> propertiesToTreate; public enum Property {
participants (1)
-
tchemit@users.nuiton.org