1 package org.codehaus.mojo.appassembler.daemon.booter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import java.io.File;
28
29 import org.apache.maven.project.MavenProject;
30 import org.codehaus.mojo.appassembler.daemon.DaemonGenerationRequest;
31 import org.codehaus.mojo.appassembler.daemon.DaemonGenerator;
32 import org.codehaus.mojo.appassembler.daemon.DaemonGeneratorException;
33 import org.codehaus.mojo.appassembler.daemon.script.AbstactScriptDaemonGenerator;
34 import org.codehaus.mojo.appassembler.model.Classpath;
35 import org.codehaus.mojo.appassembler.model.Daemon;
36 import org.codehaus.mojo.appassembler.model.Directory;
37 import org.codehaus.mojo.appassembler.model.JvmSettings;
38 import org.codehaus.mojo.appassembler.util.DependencyFactory;
39
40
41
42
43
44
45
46
47 public abstract class AbstractBooterDaemonGenerator
48 extends AbstactScriptDaemonGenerator
49 {
50
51
52
53 private DaemonGenerator genericDaemonGenerator;
54
55 protected AbstractBooterDaemonGenerator( String platformName )
56 {
57 super( platformName );
58 }
59
60
61
62
63
64 public void generate( DaemonGenerationRequest request )
65 throws DaemonGeneratorException
66 {
67 Daemon daemon = request.getDaemon();
68 JvmSettings jvmSettings = daemon.getJvmSettings();
69
70 File outputDirectory = request.getOutputDirectory();
71
72
73
74
75
76 request.setOutputDirectory( new File( outputDirectory, "etc" ) );
77
78
79
80
81
82 daemon.setJvmSettings( null );
83
84 genericDaemonGenerator.generate( request );
85
86
87 daemon.setJvmSettings( jvmSettings );
88
89
90
91
92
93 Daemon booterDaemon = new Daemon();
94 booterDaemon.setId( daemon.getId() );
95 booterDaemon.setEnvironmentSetupFileName( daemon.getEnvironmentSetupFileName() );
96 booterDaemon.setLicenseHeaderFile( daemon.getLicenseHeaderFile() );
97 booterDaemon.setModelEncoding( daemon.getModelEncoding() );
98
99 booterDaemon.setMainClass( "org.codehaus.mojo.appassembler.booter.AppassemblerBooter" );
100 booterDaemon.setShowConsoleWindow( daemon.isShowConsoleWindow() );
101
102 booterDaemon.setJvmSettings( jvmSettings );
103 booterDaemon.setEndorsedDir( daemon.getEndorsedDir() );
104
105 MavenProject project = request.getMavenProject();
106
107 Classpath classpath = new Classpath();
108 booterDaemon.setClasspath( classpath );
109 classpath.addDirectory( createDirectory( "etc" ) );
110 classpath.addDependency( DependencyFactory.create( project,
111 "org.codehaus.mojo.appassembler:appassembler-booter",
112 request.getRepositoryLayout(),
113 request.getOutputFileNameMapping() ) );
114
115
116 classpath.addDependency( DependencyFactory.create( project,
117 "org.codehaus.mojo.appassembler:appassembler-model",
118 request.getRepositoryLayout(),
119 request.getOutputFileNameMapping() ) );
120 classpath.addDependency( DependencyFactory.create( project, "org.codehaus.plexus:plexus-utils",
121 request.getRepositoryLayout(),
122 request.getOutputFileNameMapping() ) );
123 classpath.addDependency( DependencyFactory.create( project, "stax:stax-api", request.getRepositoryLayout(),
124 request.getOutputFileNameMapping() ) );
125 classpath.addDependency( DependencyFactory.create( project, "stax:stax", request.getRepositoryLayout(),
126 request.getOutputFileNameMapping() ) );
127
128
129 scriptGenerator.createBinScript( getPlatformName(), booterDaemon, outputDirectory, "bin" );
130 }
131
132
133
134
135
136 private static Directory createDirectory( String relativePath )
137 {
138 Directory directory = new Directory();
139 directory.setRelativePath( relativePath );
140 return directory;
141 }
142 }