Clover Coverage Report - Maven Eclipse Formatter Plugin 1.1-SNAPSHOT
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
28   154   13   5.6
14   61   0.46   5
5     2.6  
1    
 
  AbstractExecMojo       Line # 31 28 0% 13 47 0% 0.0
 
No Tests
 
1    package org.codehaus.mojo.exec;
2   
3    /*
4    * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
5    * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
7    * License. You may obtain a copy of the License at
8    *
9    * http://www.apache.org/licenses/LICENSE-2.0
10    *
11    * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
12    * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
13    * specific language governing permissions and limitations under the License.
14    */
15   
16    import java.io.File;
17    import java.util.List;
18   
19    import org.apache.maven.plugin.AbstractMojo;
20    import org.apache.maven.plugin.MojoExecutionException;
21    import org.apache.maven.project.MavenProject;
22    import org.codehaus.plexus.util.cli.CommandLineUtils;
23   
24    /**
25    * This class is used for unifying functionality between the 2 mojo exec plugins ('java' and 'exec'). It handles parsing
26    * the arguments and adding source/test folders.
27    *
28    * @author Philippe Jacot (PJA)
29    * @author Jerome Lacoste
30    */
 
31    public abstract class AbstractExecMojo extends AbstractMojo {
32    /**
33    * The enclosing project.
34    *
35    * @parameter expression="${project}"
36    * @required
37    * @readonly
38    */
39    protected MavenProject project;
40   
41    /**
42    * This folder is added to the list of those folders containing source to be compiled. Use this if your plugin
43    * generates source code.
44    */
45    private File sourceRoot;
46   
47    /**
48    * This folder is added to the list of those folders containing source to be compiled for testing. Use this if your
49    * plugin generates test source code.
50    */
51    private File testSourceRoot;
52   
53    /**
54    * Arguments for the executed program
55    */
56    private String commandlineArgs;
57   
58    /**
59    * Defines the scope of the classpath passed to the plugin. Set to compile,test,runtime or system depending on your
60    * needs. Since 1.1.2, the default value is 'runtime' instead of 'compile'.
61    */
62    protected String classpathScope;
63   
64    /**
65    * Skip the execution.
66    *
67    * @parameter expression="${skip}" default-value="false"
68    * @since 1.0.1
69    */
70    private boolean skip;
71   
72    /**
73    * Collects the project artifacts in the specified List and the project specific classpath (build output and build
74    * test output) Files in the specified List, depending on the plugin classpathScope value.
75    *
76    * @param artifacts
77    * the list where to collect the scope specific artifacts
78    * @param theClasspathFiles
79    * the list where to collect the scope specific output directories
80    */
 
81  0 toggle protected void collectProjectArtifactsAndClasspath(List artifacts, List theClasspathFiles) {
82   
83  0 if ("compile".equals(classpathScope)) {
84  0 artifacts.addAll(project.getCompileArtifacts());
85  0 theClasspathFiles.add(new File(project.getBuild().getOutputDirectory()));
86  0 } else if ("test".equals(classpathScope)) {
87  0 artifacts.addAll(project.getTestArtifacts());
88  0 theClasspathFiles.add(new File(project.getBuild().getTestOutputDirectory()));
89  0 theClasspathFiles.add(new File(project.getBuild().getOutputDirectory()));
90  0 } else if ("runtime".equals(classpathScope)) {
91  0 artifacts.addAll(project.getRuntimeArtifacts());
92  0 theClasspathFiles.add(new File(project.getBuild().getOutputDirectory()));
93  0 } else if ("system".equals(classpathScope)) {
94  0 artifacts.addAll(project.getSystemArtifacts());
95    } else {
96  0 throw new IllegalStateException("Invalid classpath scope: " + classpathScope);
97    }
98   
99  0 getLog().debug("Collected project artifacts " + artifacts);
100  0 getLog().debug("Collected project classpath " + theClasspathFiles);
101    }
102   
103    /**
104    * Parses the argument string given by the user. Strings are recognized as everything between STRING_WRAPPER.
105    * PARAMETER_DELIMITER is ignored inside a string. STRING_WRAPPER and PARAMETER_DELIMITER can be escaped using
106    * ESCAPE_CHAR.
107    *
108    * @return Array of String representing the arguments
109    * @throws MojoExecutionException
110    * for wrong formatted arguments
111    */
 
112  0 toggle protected String[] parseCommandlineArgs() throws MojoExecutionException {
113  0 if (commandlineArgs == null) {
114  0 return null;
115    } else {
116  0 try {
117  0 return CommandLineUtils.translateCommandline(commandlineArgs);
118    } catch (Exception e) {
119  0 throw new MojoExecutionException(e.getMessage());
120    }
121    }
122    }
123   
124    /**
125    * @return true of the mojo has command line arguments
126    */
 
127  0 toggle protected boolean hasCommandlineArgs() {
128  0 return (commandlineArgs != null);
129    }
130   
131    /**
132    * Register compile and compile tests source roots if necessary
133    */
 
134  0 toggle protected void registerSourceRoots() {
135  0 if (sourceRoot != null) {
136  0 getLog().info("Registering compile source root " + sourceRoot);
137  0 project.addCompileSourceRoot(sourceRoot.toString());
138    }
139   
140  0 if (testSourceRoot != null) {
141  0 getLog().info("Registering compile test source root " + testSourceRoot);
142  0 project.addTestCompileSourceRoot(testSourceRoot.toString());
143    }
144    }
145   
146    /**
147    * Check if the execution should be skipped
148    *
149    * @return true to skip
150    */
 
151  0 toggle protected boolean isSkip() {
152  0 return skip;
153    }
154    }