View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional information regarding
4    * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
5    * "License"); you may not use this file except in compliance with the License. You may obtain a
6    * copy of the License at
7    * 
8    * http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software distributed under the License
11   * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing permissions and limitations under
13   * the License.
14   */
15  package org.apache.maven.plugin.eclipse;
16  
17  import java.io.File;
18  import java.net.MalformedURLException;
19  import java.net.URL;
20  
21  import org.apache.maven.plugin.MojoExecutionException;
22  import org.apache.maven.plugin.eclipse.writers.workspace.EclipseWorkspaceWriter;
23  
24  /**
25   * Configures The following Eclipse Workspace features:
26   * <ul>
27   * <li>Adds the classpath variable MAVEN_REPO to Eclipse.</li>
28   * <li>Optionally load Eclipse code style file via a URL.</li>
29   * </ul>
30   * 
31   * @goal configure-workspace
32   * @requiresProject false
33   */
34  public class ConfigureWorkspaceMojo
35      extends AbstractWorkspaceMojo
36  {
37      /**
38       * Point to a URL containing code styles content.
39       * 
40       * @parameter expression="${eclipse.workspaceCodeStylesURL}"
41       */
42      private String workspaceCodeStylesURL;
43  
44      /**
45       * Name of a profile in <code>workspaceCodeStylesURL</code> to activate. Default is the first profile name in the
46       * code style file in <code>workspaceCodeStylesURL</code>
47       * 
48       * @parameter expression="${eclipse.workspaceActiveCodeStyleProfileName}"
49       */
50      private String workspaceActiveCodeStyleProfileName;
51  
52      public void execute()
53          throws MojoExecutionException
54      {
55          WorkspaceConfiguration config = new WorkspaceConfiguration();
56          config.setWorkspaceDirectory( new File( this.getWorkspace() ) );
57          config.setLocalRepository( this.getLocalRepository() );
58  
59          if ( this.workspaceCodeStylesURL != null )
60          {
61              try
62              {
63                  config.setCodeStylesURL( new URL( workspaceCodeStylesURL ) );
64              }
65              catch ( MalformedURLException e )
66              {
67                  throw new MojoExecutionException( e.getMessage(), e );
68              }
69  
70              config.setActiveStyleProfileName( workspaceActiveCodeStyleProfileName );
71  
72          }
73  
74          new EclipseWorkspaceWriter().init( this.getLog(), config ).write();
75      }
76  
77  }