@@ -134,84 +134,90 @@ public void build() {
134134 * @throws IOException on errors during creating or writing a file
135135 */
136136 private void setupService ( Service service ) throws IOException {
137- String serviceUnixName = service .getId ();
138- String installationRoot = task .getInstallationRoot ();
139- String workingDir = installationRoot + (service .getWorkDir () != null ? "/" + service .getWorkDir () : "" );
140- String mainJarPath = workingDir + "/" + service .getMainJar ();
141-
142- String initTemplate = "unix/init-service.sh" ;
143- Template initScript = new Template ( initTemplate );
144- initScript .setPlaceholder ( "name" , serviceUnixName );
145- String version = task .getVersion ();
146- initScript .setPlaceholder ( "majorversion" , version .substring ( 0 , version .indexOf ( '.' ) ) );
147- initScript .setPlaceholder ( "displayName" , setup .getApplication () );
148- initScript .setPlaceholder ( "description" , service .getDescription () );
149- initScript .setPlaceholder ( "wait" , "2" );
150-
151- initScript .setPlaceholder ( "workdir" , workingDir );
152- initScript .setPlaceholder ( "mainJar" , mainJarPath );
153- initScript .setPlaceholder ( "startArguments" , (service .getStartArguments ()).trim () );
154- initScript .setPlaceholder ( "javaVMArguments" , String .join ( " " , service .getJavaVMArguments ()).trim () );
155-
156- initScript .setPlaceholder ( "mainClass" , service .getMainClass () );
157- initScript .setPlaceholder ( "daemonUser" , task .getDaemonUser () );
158- initScript .setPlaceholder ( "daemonExec" , javaMainExecutable );
159- initScript .setPlaceholder ( "additionalServiceScript" , task .getAdditionalServiceScript () );
160-
161- String initScriptFile = "BUILD/etc/init.d/" + serviceUnixName ;
162- initScript .writeTo ( createFile ( initScriptFile , true ) );
163- controlBuilder .addConfFile ( initScriptFile );
164-
165-
137+ String serviceUnixName = service .getId ();
138+ String installationRoot = task .getInstallationRoot ();
139+ String workingDir = installationRoot + (service .getWorkDir () != null ? "/" + service .getWorkDir () : "" );
140+ String mainJarPath = workingDir + "/" + service .getMainJar ();
141+ String version = task .getVersion ();
142+
143+ if (task .isUseInitD ()) {
144+ String initTemplate = "unix/init-service.sh" ;
145+ Template initScript = new Template ( initTemplate );
146+ initScript .setPlaceholder ( "name" , serviceUnixName );
147+ initScript .setPlaceholder ( "majorversion" , version .substring ( 0 , version .indexOf ( '.' ) ) );
148+ initScript .setPlaceholder ( "displayName" , setup .getApplication () );
149+ initScript .setPlaceholder ( "description" , service .getDescription () );
150+ initScript .setPlaceholder ( "wait" , "2" );
151+
152+ initScript .setPlaceholder ( "workdir" , workingDir );
153+ initScript .setPlaceholder ( "mainJar" , mainJarPath );
154+ initScript .setPlaceholder ( "startArguments" , (service .getStartArguments ()).trim () );
155+ initScript .setPlaceholder ( "javaVMArguments" , String .join ( " " , service .getJavaVMArguments ()).trim () );
156+
157+ initScript .setPlaceholder ( "mainClass" , service .getMainClass () );
158+ initScript .setPlaceholder ( "daemonUser" , task .getDaemonUser () );
159+ initScript .setPlaceholder ( "daemonExec" , javaMainExecutable );
160+ initScript .setPlaceholder ( "additionalServiceScript" , task .getAdditionalServiceScript () );
161+
162+ String initScriptFile = "BUILD/etc/init.d/" + serviceUnixName ;
163+ initScript .writeTo ( createFile ( initScriptFile , true ) );
164+ controlBuilder .addConfFile ( initScriptFile );
165+
166+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PREINSTHEAD , "[ -f \" /etc/init.d/" + serviceUnixName + "\" ] && \" /etc/init.d/" + serviceUnixName + "\" stop || true" );
167+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "if [ -f \" /etc/init.d/" + serviceUnixName + "\" ] && [ \" " + installationRoot + "\" != \" $RPM_INSTALL_PREFIX\" ] ; then\n "
168+ + "echo replace path\n "
169+ + "sed -i 's|'" + installationRoot + "'|'$RPM_INSTALL_PREFIX'|g' /etc/init.d/" + serviceUnixName
170+ + "\n fi" );
171+
172+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "( [ -f \" /etc/init.d/" + serviceUnixName + "\" ] && chkconfig --add " + serviceUnixName + " && systemctl enable " + serviceUnixName + " ) || true" );
173+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "[ -f \" /etc/init.d/" + serviceUnixName + "\" ] && /etc/init.d/" + serviceUnixName + " stop || true" );
174+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "( [ -f \" /etc/init.d/" + serviceUnixName + "\" ] && systemctl disable " + serviceUnixName + " && chkconfig --del " + serviceUnixName + " ) || true" );
175+ } else {
176+
177+ String systemdTemplate = "unix/systemd.service" ;
178+ Template systemdScript = new Template ( systemdTemplate );
179+ systemdScript .setPlaceholder ( "name" , serviceUnixName );
180+ systemdScript .setPlaceholder ( "majorversion" , version .substring ( 0 , version .indexOf ( '.' ) ) );
181+ systemdScript .setPlaceholder ( "displayName" , setup .getApplication () );
182+ systemdScript .setPlaceholder ( "description" , service .getDescription () );
183+ systemdScript .setPlaceholder ( "wait" , "2" );
184+
185+ systemdScript .setPlaceholder ( "workdir" , workingDir );
186+ systemdScript .setPlaceholder ( "mainJar" , mainJarPath );
187+ systemdScript .setPlaceholder ( "startArguments" , (service .getStartArguments ()).trim () );
188+ systemdScript .setPlaceholder ( "javaVMArguments" , String .join ( " " , service .getJavaVMArguments ()).trim () );
189+
190+ systemdScript .setPlaceholder ( "mainClass" , service .getMainClass () );
191+ systemdScript .setPlaceholder ( "daemonUser" , task .getDaemonUser () );
192+ systemdScript .setPlaceholder ( "daemonExec" , javaMainExecutable );
193+ systemdScript .setPlaceholder ( "additionalServiceScript" , task .getAdditionalServiceScript () );
194+
195+ String systemdScriptFile = "BUILD/usr/lib/systemd/system/" + serviceUnixName + ".service" ;
196+ systemdScript .writeTo ( createFile ( systemdScriptFile , true ) );
197+ controlBuilder .addConfFile ( systemdScriptFile );
198+
199+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "( [ -f \" /usr/lib/systemd/system/" + serviceUnixName + ".service\" ] && systemctl enable " + serviceUnixName + " ) || true" );
200+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PREINSTHEAD , "[ -f \" /usr/lib/systemd/system/" + serviceUnixName + ".service\" ] && systemctl stop \" " + serviceUnixName + "\" || true" );
201+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "[ -f \" /usr/lib/systemd/system/" + serviceUnixName + ".service\" ] && systemctl stop " + serviceUnixName + " || true" );
202+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "( [ -f \" /usr/lib/systemd/system/" + serviceUnixName + ".service\" ] && systemctl disable " + serviceUnixName + " ) || true" );
203+ }
166204
167- String systemdTemplate = "unix/systemd.service" ;
168- Template systemdScript = new Template ( systemdTemplate );
169- systemdScript .setPlaceholder ( "name" , serviceUnixName );
170- systemdScript .setPlaceholder ( "majorversion" , version .substring ( 0 , version .indexOf ( '.' ) ) );
171- systemdScript .setPlaceholder ( "displayName" , setup .getApplication () );
172- systemdScript .setPlaceholder ( "description" , service .getDescription () );
173- systemdScript .setPlaceholder ( "wait" , "2" );
174-
175- systemdScript .setPlaceholder ( "workdir" , workingDir );
176- systemdScript .setPlaceholder ( "mainJar" , mainJarPath );
177- systemdScript .setPlaceholder ( "startArguments" , (service .getStartArguments ()).trim () );
178- systemdScript .setPlaceholder ( "javaVMArguments" , String .join ( " " , service .getJavaVMArguments ()).trim () );
179-
180- systemdScript .setPlaceholder ( "mainClass" , service .getMainClass () );
181- systemdScript .setPlaceholder ( "daemonUser" , task .getDaemonUser () );
182- systemdScript .setPlaceholder ( "daemonExec" , javaMainExecutable );
183- systemdScript .setPlaceholder ( "additionalServiceScript" , task .getAdditionalServiceScript () );
184-
185- String systemdScriptFile = "BUILD/usr/lib/systemd/system/" + serviceUnixName + ".service" ;
186- systemdScript .writeTo ( createFile ( systemdScriptFile , true ) );
187- controlBuilder .addConfFile ( systemdScriptFile );
188- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PREINSTHEAD , "[ -f \" /etc/init.d/" + serviceUnixName + "\" ] && \" /etc/init.d/" + serviceUnixName + "\" stop || true" );
189- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PREINSTHEAD , "[ -f \" /usr/lib/systemd/system/" + serviceUnixName + ".service\" ] && service \" " + serviceUnixName + "\" stop || true" );
190205
191- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "if [ -f \" /etc/init.d/" + serviceUnixName + "\" ] && [ \" " + installationRoot + "\" != \" $RPM_INSTALL_PREFIX\" ] ; then\n "
192- + "echo replace path\n "
193- + "sed -i 's|'" + installationRoot + "'|'$RPM_INSTALL_PREFIX'|g' /etc/init.d/" + serviceUnixName
194- + "\n fi" );
195-
196- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "if [ ! -f /etc/pam.d/passwd ] && [ ! -f /etc/pam.d/" + serviceUnixName + " ] ; then\n "
197- + "echo create pam link for " + serviceUnixName + "\n "
198- + "ln -s /etc/pam.d/smtp /etc/pam.d/" + serviceUnixName + "\n "
199- + "\n fi" );
200206
201207 // copy a default service file if set
202208 if ( task .getDefaultServiceFile () != null ) {
203209 File serviceDestFile = createFile ( "BUILD/etc/sysconfig/" + serviceUnixName , true );
204210 Files .copy ( task .getDefaultServiceFile ().toPath (), serviceDestFile .toPath (), java .nio .file .StandardCopyOption .REPLACE_EXISTING );
205211 }
206-
207- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "( [ -f \" /etc/init.d/" + serviceUnixName + "\" ] && chkconfig --add " + serviceUnixName + " && systemctl enable " + serviceUnixName + " ) || true" );
212+
208213 if ( task .shouldStartDefaultService () ) {
209- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "service " + serviceUnixName + " start || true" );
214+ if (task .isUseInitD ()) {
215+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "service " + serviceUnixName + " start || true" );
216+ } else {
217+ controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .POSTINSTTAIL , "systemctl start " + serviceUnixName + " || true" );
218+ }
210219 }
211-
212- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "[ -f \" /etc/init.d/" + serviceUnixName + "\" ] && /etc/init.d/" + serviceUnixName + " stop || true" );
213- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "[ -f \" /usr/lib/systemd/system/" + serviceUnixName + ".service\" ] && service " + serviceUnixName + " stop || true" );
214- controlBuilder .addScriptFragment ( RpmControlFileBuilder .Script .PRERMHEAD , "( [ -f \" /etc/init.d/" + serviceUnixName + "\" ] && systemctl disable " + serviceUnixName + " && chkconfig --del " + serviceUnixName + " ) || true" );
220+
215221 }
216222
217223 /**
0 commit comments