1 package org.apache.maven.plugin.eclipse;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Map;
6
7 import org.apache.maven.plugin.MojoExecutionException;
8 import org.apache.maven.plugin.eclipse.writers.EclipseWriterConfig;
9 import org.apache.maven.plugin.eclipse.writers.myeclipse.MyEclipseHibernateWriter;
10 import org.apache.maven.plugin.eclipse.writers.myeclipse.MyEclipseMetadataWriter;
11 import org.apache.maven.plugin.eclipse.writers.myeclipse.MyEclipseSpringBeansWriter;
12 import org.apache.maven.plugin.eclipse.writers.myeclipse.MyEclipseStrutsDataWriter;
13 import org.apache.maven.plugin.ide.IdeUtils;
14 import org.apache.maven.plugin.ide.JeeUtils;
15
16
17
18
19
20
21
22
23
24 public class MyEclipsePlugin
25 extends EclipsePlugin
26 {
27
28 private static final String MYECLIPSE_EAR_NATURE = "com.genuitec.eclipse.j2eedt.core.earnature";
29
30 private static final String MYECLIPSE_WEB_NATURE = "com.genuitec.eclipse.j2eedt.core.webnature";
31
32 private static final String MYECLISPE_SPRING_NATURE = "com.genuitec.eclipse.springframework.springnature";
33
34 private static final String MYECLIPSE_STRUTS_NATURE =
35 "com.genuitec.eclipse.cross.easystruts.eclipse.easystrutsnature";
36
37 private static final String MYECLIPSE_HIBERNATE_NATURE = "com.genuitec.eclipse.hibernate.hibernatenature";
38
39
40 private static final String MYECLIPSE_DEPLOYMENT_DESCRIPTOR_VALIDATOR_BUILDER =
41 "com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator";
42
43 private static final String MYECLIPSE_WEB_CLASSPATH_BUILDER =
44 "com.genuitec.eclipse.j2eedt.core.WebClasspathBuilder";
45
46 private static final String MYECLIPSE_J2EE_PROJECT_VALIDATOR_BUILDER =
47 "com.genuitec.eclipse.j2eedt.core.J2EEProjectValidator";
48
49 private static final String MYECLIPSE_SPRING_BUILDER = "com.genuitec.eclipse.springframework.springbuilder";
50
51 private static final String MYECLIPSE_HIBERNATE_BUILDER = "com.genuitec.eclipse.hibernate.HibernateBuilder";
52
53 private static final String MYECLIPSE_J2EE_14_CLASSPATH_CONTAINER =
54 "com.genuitec.eclipse.j2eedt.core.J2EE14_CONTAINER";
55
56 private static final String MYECLIPSE_J2EE_13_CLASSPATH_CONTAINER =
57 "com.genuitec.eclipse.j2eedt.core.J2EE13_CONTAINER";
58
59 private static final String MYECLIPSE_DEFAULT_HIBERNATE_CFG_XML = "src/main/resources/applicationContext.xml";
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 private Map spring;
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 private Map hibernate;
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 private Map struts;
108
109
110
111
112 protected void writeConfigurationExtras( EclipseWriterConfig config )
113 throws MojoExecutionException
114 {
115 super.writeConfigurationExtras( config );
116 if ( isJavaProject() )
117 {
118
119 if ( Constants.PROJECT_PACKAGING_WAR.equals( project.getPackaging() ) )
120 {
121 String warSourceDirectory =
122 IdeUtils.getPluginSetting( config.getProject(), JeeUtils.ARTIFACT_MAVEN_WAR_PLUGIN,
123 "warSourceDirectory",
124 "/src/main/webapp" );
125
126 EclipseSourceDir[] sourceDirs = config.getSourceDirs();
127 for ( int i = 0; i < sourceDirs.length; i++ )
128 {
129 if ( !sourceDirs[i].isTest() )
130 {
131 sourceDirs[i].setOutput( warSourceDirectory + "/WEB-INF/classes" );
132 }
133 }
134 }
135 }
136
137
138
139 new MyEclipseMetadataWriter().init( getLog(), config ).write();
140
141 if ( getStruts() != null )
142 {
143 new MyEclipseStrutsDataWriter( getStruts() ).init( getLog(), config ).write();
144 }
145 if ( getSpring() != null )
146 {
147 new MyEclipseSpringBeansWriter( getSpring() ).init( getLog(), config ).write();
148 }
149 if ( getHibernate() != null )
150 {
151
152 String hbmCfgFile = (String) getHibernate().get( "config-file" );
153
154 if ( "".equals( hbmCfgFile ) )
155 {
156 hbmCfgFile = MYECLIPSE_DEFAULT_HIBERNATE_CFG_XML;
157 }
158
159 new MyEclipseHibernateWriter( getHibernate() ).init( getLog(), config ).write();
160 }
161 }
162
163
164
165
166
167
168 protected void fillDefaultBuilders( String packaging )
169 {
170 List commands = new ArrayList();
171
172 super.fillDefaultBuilders( packaging );
173
174 if ( Constants.PROJECT_PACKAGING_EAR.equals( packaging ) )
175 {
176 if ( getLog().isDebugEnabled() )
177 {
178 getLog().debug( "EAR packaging does not need specific builders" );
179 }
180 }
181 else if ( Constants.PROJECT_PACKAGING_WAR.equals( packaging ) )
182 {
183 commands.add( MYECLIPSE_DEPLOYMENT_DESCRIPTOR_VALIDATOR_BUILDER );
184 commands.add( MYECLIPSE_J2EE_PROJECT_VALIDATOR_BUILDER );
185 commands.add( MYECLIPSE_WEB_CLASSPATH_BUILDER );
186
187
188 if ( !getBuildcommands().contains( new BuildCommand( BUILDER_WST_VALIDATION ) ) )
189 {
190 commands.add( BUILDER_WST_VALIDATION );
191 }
192 }
193 else if ( Constants.PROJECT_PACKAGING_EJB.equals( packaging ) )
194 {
195 if ( getLog().isInfoEnabled() )
196 {
197 getLog().info( "EJB packaging is not implemented yet" );
198 }
199 }
200 else if ( isJavaProject() )
201 {
202 if ( getLog().isDebugEnabled() )
203 {
204 getLog().debug( "JAR packaging does not need specific builders" );
205 }
206 }
207
208 if ( getSpring() != null )
209 {
210 commands.add( MYECLIPSE_SPRING_BUILDER );
211 }
212 if ( getHibernate() != null )
213 {
214 commands.add( MYECLIPSE_HIBERNATE_BUILDER );
215 }
216
217 convertBuildCommandList( commands );
218 getBuildcommands().addAll( commands );
219 }
220
221
222
223
224
225
226 protected void fillDefaultNatures( String packaging )
227 {
228 List natures = new ArrayList();
229
230 super.fillDefaultNatures( packaging );
231
232 if ( Constants.PROJECT_PACKAGING_EAR.equals( packaging ) )
233 {
234 natures.add( MYECLIPSE_EAR_NATURE );
235 }
236 else if ( Constants.PROJECT_PACKAGING_WAR.equals( packaging ) )
237 {
238 natures.add( MYECLIPSE_WEB_NATURE );
239 }
240 else if ( Constants.PROJECT_PACKAGING_EJB.equals( packaging ) )
241 {
242 if ( getLog().isInfoEnabled() )
243 {
244 getLog().info( "EJB packaging is not implemented yet" );
245 }
246 }
247 else if ( isJavaProject() )
248 {
249 if ( getLog().isDebugEnabled() )
250 {
251 getLog().debug( "JAR projects does not need specific natures" );
252 }
253 }
254
255
256 if ( getSpring() != null )
257 {
258 natures.add( MYECLISPE_SPRING_NATURE );
259 }
260
261 if ( getStruts() != null )
262 {
263 natures.add( MYECLIPSE_STRUTS_NATURE );
264 }
265
266
267 if ( getHibernate() != null )
268 {
269 natures.add( MYECLIPSE_HIBERNATE_NATURE );
270 }
271
272 getProjectnatures().addAll( natures );
273 }
274
275 protected void fillDefaultClasspathContainers( String packaging )
276 {
277 super.fillDefaultClasspathContainers( packaging );
278
279 if ( Constants.PROJECT_PACKAGING_WAR.equals( packaging ) )
280 {
281 String j2eeVersion;
282 if ( this.jeeversion != null )
283 {
284 j2eeVersion = JeeUtils.getJeeDescriptorFromJeeVersion( this.jeeversion ).getJeeVersion();
285 }
286 else
287 {
288 j2eeVersion =
289 JeeUtils.getJeeDescriptorFromServletVersion( JeeUtils.resolveServletVersion( project ) ).getJeeVersion();
290 }
291
292 if ( "1.3".equals( j2eeVersion ) )
293 {
294 getClasspathContainers().add( MYECLIPSE_J2EE_13_CLASSPATH_CONTAINER );
295 }
296 else if ( "1.4".equals( j2eeVersion ) )
297 {
298 getClasspathContainers().add( MYECLIPSE_J2EE_14_CLASSPATH_CONTAINER );
299 }
300 }
301 }
302
303 public Map getSpring()
304 {
305 return spring;
306 }
307
308 public void setSpring( Map spring )
309 {
310 this.spring = spring;
311 }
312
313 public Map getHibernate()
314 {
315 return hibernate;
316 }
317
318 public void setHibernate( Map hibernate )
319 {
320 this.hibernate = hibernate;
321 }
322
323 public Map getStruts()
324 {
325 return struts;
326 }
327
328 public void setStruts( Map struts )
329 {
330 this.struts = struts;
331 }
332
333 }