Lines 64-70
Link Here
|
64 |
import org.netbeans.modules.maven.api.execute.RunUtils; |
64 |
import org.netbeans.modules.maven.api.execute.RunUtils; |
65 |
import org.netbeans.modules.maven.execute.BeanRunConfig; |
65 |
import org.netbeans.modules.maven.execute.BeanRunConfig; |
66 |
import org.netbeans.modules.maven.options.MavenCommandSettings; |
66 |
import org.netbeans.modules.maven.options.MavenCommandSettings; |
67 |
import org.netbeans.api.progress.ProgressHandle; |
|
|
68 |
import org.netbeans.api.project.Project; |
67 |
import org.netbeans.api.project.Project; |
69 |
import org.netbeans.api.project.ProjectManager; |
68 |
import org.netbeans.api.project.ProjectManager; |
70 |
import org.netbeans.modules.maven.api.ModelUtils; |
69 |
import org.netbeans.modules.maven.api.ModelUtils; |
Lines 72-78
Link Here
|
72 |
import org.netbeans.modules.maven.api.archetype.ProjectInfo; |
71 |
import org.netbeans.modules.maven.api.archetype.ProjectInfo; |
73 |
import org.netbeans.modules.maven.indexer.api.RepositoryPreferences; |
72 |
import org.netbeans.modules.maven.indexer.api.RepositoryPreferences; |
74 |
import org.netbeans.modules.maven.model.ModelOperation; |
73 |
import org.netbeans.modules.maven.model.ModelOperation; |
75 |
import org.netbeans.modules.maven.model.Utilities; |
|
|
76 |
import org.netbeans.modules.maven.model.pom.Dependency; |
74 |
import org.netbeans.modules.maven.model.pom.Dependency; |
77 |
import org.netbeans.modules.maven.model.pom.POMModel; |
75 |
import org.netbeans.modules.maven.model.pom.POMModel; |
78 |
import org.netbeans.spi.project.ui.support.ProjectChooser; |
76 |
import org.netbeans.spi.project.ui.support.ProjectChooser; |
Lines 281-289
Link Here
|
281 |
} |
279 |
} |
282 |
|
280 |
|
283 |
/** |
281 |
/** |
284 |
* Instantiates archetype stored in given wizard descriptor, with progress UI notification. |
282 |
* Instantiates archetype stored in given wizard descriptor. |
285 |
*/ |
283 |
*/ |
286 |
static Set<FileObject> instantiate(ProgressHandle handle, WizardDescriptor wiz) throws IOException { |
284 |
static Set<FileObject> instantiate(WizardDescriptor wiz) throws IOException { |
287 |
ProjectInfo vi = new ProjectInfo((String) wiz.getProperty("groupId"), (String) wiz.getProperty("artifactId"), (String) wiz.getProperty("version"), (String) wiz.getProperty("package")); //NOI18N |
285 |
ProjectInfo vi = new ProjectInfo((String) wiz.getProperty("groupId"), (String) wiz.getProperty("artifactId"), (String) wiz.getProperty("version"), (String) wiz.getProperty("package")); //NOI18N |
288 |
|
286 |
|
289 |
Archetype arch = (Archetype) wiz.getProperty("archetype"); //NOI18N |
287 |
Archetype arch = (Archetype) wiz.getProperty("archetype"); //NOI18N |
Lines 292-337
Link Here
|
292 |
@SuppressWarnings("unchecked") |
290 |
@SuppressWarnings("unchecked") |
293 |
Map<String,String> additional = (Map<String,String>) wiz.getProperty(ADDITIONAL_PROPS); |
291 |
Map<String,String> additional = (Map<String,String>) wiz.getProperty(ADDITIONAL_PROPS); |
294 |
|
292 |
|
295 |
try { |
293 |
File projFile = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); // NOI18N |
296 |
ProjectInfo ear_vi = (ProjectInfo)wiz.getProperty("ear_versionInfo"); //NOI18N |
294 |
createFromArchetype(projFile, vi, arch, additional, true); |
297 |
if (ear_vi != null) { |
295 |
Set<FileObject> projects = openProjects(projFile, null); |
298 |
// enterprise application wizard, multiple archetypes to run |
296 |
Templates.setDefinesMainProject(wiz, projects.size() > 1); |
299 |
ProjectInfo web_vi = (ProjectInfo)wiz.getProperty("web_versionInfo"); //NOI18N |
297 |
return projects; |
300 |
ProjectInfo ejb_vi = (ProjectInfo)wiz.getProperty("ejb_versionInfo"); //NOI18N |
|
|
301 |
|
302 |
handle.start(8 + (web_vi != null ? 3 : 0) + (ejb_vi != null ? 3 : 0)); |
303 |
File rootFile = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); // NOI18N |
304 |
createFromArchetype(handle, rootFile, vi, arch, additional, 0, true); |
305 |
File earFile = FileUtil.normalizeFile((File) wiz.getProperty("ear_projdir")); // NOI18N |
306 |
createFromArchetype(handle, earFile, ear_vi, (Archetype) wiz.getProperty("ear_archetype"), null, 4, false); //NOI18N |
307 |
int progressCounter = 6; |
308 |
if (web_vi != null) { |
309 |
createFromArchetype(handle, FileUtil.normalizeFile((File)wiz.getProperty("web_projdir")), web_vi, //NOI18N |
310 |
(Archetype)wiz.getProperty("web_archetype"), null, progressCounter, false); //NOI18N |
311 |
progressCounter += 3; |
312 |
} |
313 |
if (ejb_vi != null) { |
314 |
createFromArchetype(handle, FileUtil.normalizeFile((File)wiz.getProperty("ejb_projdir")), ejb_vi, //NOI18N |
315 |
(Archetype)wiz.getProperty("ejb_archetype"), null, progressCounter, false); //NOI18N |
316 |
progressCounter += 3; |
317 |
} |
318 |
addEARDeps((File)wiz.getProperty("ear_projdir"), ejb_vi, web_vi); |
319 |
progressCounter++; |
320 |
Set<FileObject> projects = openProjects(rootFile, earFile); |
321 |
handle.progress(++progressCounter); |
322 |
return projects; |
323 |
} else { |
324 |
handle.start(4); |
325 |
File projFile = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); // NOI18N |
326 |
createFromArchetype(handle, projFile, vi, arch, additional, 0, true); |
327 |
Set<FileObject> projects = openProjects(projFile, null); |
328 |
handle.progress(4); |
329 |
Templates.setDefinesMainProject(wiz, projects.size() > 1); |
330 |
return projects; |
331 |
} |
332 |
} finally { |
333 |
handle.finish(); |
334 |
} |
335 |
} |
298 |
} |
336 |
|
299 |
|
337 |
private static final String loggerName = "org.netbeans.ui.metrics.maven"; // NOI18N |
300 |
private static final String loggerName = "org.netbeans.ui.metrics.maven"; // NOI18N |
Lines 345-353
Link Here
|
345 |
Logger.getLogger(loggerName).log(logRecord); |
308 |
Logger.getLogger(loggerName).log(logRecord); |
346 |
} |
309 |
} |
347 |
|
310 |
|
348 |
public static void createFromArchetype(ProgressHandle handle, File projDir, ProjectInfo vi, Archetype arch, @NullAllowed Map<String,String> additional, int progressCounter, boolean updateLastUsedProjectDir) throws IOException { |
311 |
public static void createFromArchetype(File projDir, ProjectInfo vi, Archetype arch, @NullAllowed Map<String,String> additional, boolean updateLastUsedProjectDir) throws IOException { |
349 |
handle.progress(++progressCounter); |
|
|
350 |
|
351 |
final File parent = projDir.getParentFile(); |
312 |
final File parent = projDir.getParentFile(); |
352 |
if (parent == null) { |
313 |
if (parent == null) { |
353 |
throw new IOException("no parent of " + projDir); |
314 |
throw new IOException("no parent of " + projDir); |
Lines 358-368
Link Here
|
358 |
if (!parent.isDirectory() && !parent.mkdirs()) { |
319 |
if (!parent.isDirectory() && !parent.mkdirs()) { |
359 |
throw new IOException("could not create " + parent); |
320 |
throw new IOException("could not create " + parent); |
360 |
} |
321 |
} |
361 |
handle.progress(NbBundle.getMessage(MavenWizardIterator.class, "PRG_Processing_Archetype"), ++progressCounter); |
|
|
362 |
|
363 |
runArchetype(parent, vi, arch, additional); |
322 |
runArchetype(parent, vi, arch, additional); |
364 |
|
|
|
365 |
handle.progress(++progressCounter); |
366 |
} |
323 |
} |
367 |
|
324 |
|
368 |
public static Set<FileObject> openProjects(File dirF, File mainProjectDir) throws IOException { |
325 |
public static Set<FileObject> openProjects(File dirF, File mainProjectDir) throws IOException { |
Lines 410-433
Link Here
|
410 |
} |
367 |
} |
411 |
} |
368 |
} |
412 |
|
369 |
|
413 |
private static void addEARDeps (File earDir, ProjectInfo ejbVi, ProjectInfo webVi) { |
|
|
414 |
FileObject earDirFO = FileUtil.toFileObject(FileUtil.normalizeFile(earDir)); |
415 |
if (earDirFO == null) { |
416 |
return; |
417 |
} |
418 |
List<ModelOperation<POMModel>> operations = new ArrayList<ModelOperation<POMModel>>(); |
419 |
if (ejbVi != null) { |
420 |
// EAR ---> ejb |
421 |
operations.add(new AddDependencyOperation(ejbVi, "ejb")); |
422 |
} |
423 |
if (webVi != null) { |
424 |
// EAR ---> war |
425 |
operations.add(new AddDependencyOperation(webVi, "war")); |
426 |
} |
427 |
|
428 |
Utilities.performPOMModelOperations(earDirFO.getFileObject("pom.xml"), operations); |
429 |
} |
430 |
|
431 |
public static class AddDependencyOperation implements ModelOperation<POMModel> { |
370 |
public static class AddDependencyOperation implements ModelOperation<POMModel> { |
432 |
private final String group; |
371 |
private final String group; |
433 |
private final String artifact; |
372 |
private final String artifact; |