为mvn jetty:run生成System V init脚本

时间:2014-04-29 15:10:05

标签: linux maven unix service jetty

如何快速生成(可能没有任何编码)System V init脚本来启动和停止使用mvn jetty:run启动的Jetty实例的服务?

2 个答案:

答案 0 :(得分:1)

我将在前言中说我已经搜索到了高低,最终必须为这个问题制定自己的解决方案。目前,我建议使用Apache Commons Daemon(由Tomcat使用),因为它提供了我尝试过的最好的守护进程行为,并且编写初始化脚本相当简单。但是,该解决方案并不能真正满足您快速实施的标准。

相反,对于不需要更改代码的更快的解决方案,您可以使用appassembler-maven-plugin。以下是基于实际产品的工作配置的示例pom。

以下配置是为unix sysadmins构建的。以下是一些需要注意的事项:

  • 它使用基于xml的jetty入口点org.eclipse.jetty.xml.XmlConfiguration启动jetty。我认为这大致相当于jetty:run
  • 类路径中的
  • / etc / my-jetty-server,以便可以将配置文件(如jetty.xml或web.xml)放在那里。
  • jsw的启动日志写入/ var / log / my-jetty-server。

此外,您可能希望打包生成的程序和依赖项,以便安装产品并使用“service my-jetty-server start”或操作系统的等效项启动它。你可以使用maven-assembly-plugin来做到这一点,但这有点超出了这个问题的范围。

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <id>generate-jsw-scripts</id>
        <phase>package</phase>
        <goals>
          <goal>generate-daemons</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
      <target>${project.build.directory}</target>

      <daemons>
        <daemon>
          <id>my-jetty-server</id>
          <mainClass>org.eclipse.jetty.xml.XmlConfiguration</mainClass>

          <generatorConfigurations>
            <generatorConfiguration>
              <generator>jsw</generator>
              <includes>
                <include>linux-x86-32</include>
                <include>linux-x86-64</include>
              </includes>
              <configuration>
                <property>
                  <name>configuration.directory.in.classpath.first</name>
                  <value>/etc/my-jetty-server</value>
                </property>
                <property>
                  <name>wrapper.logfile</name>
                  <value>/var/log/my-jetty-server/out.log</value>
                </property>
              </configuration>
            </generatorConfiguration>
          </generatorConfigurations>
          <platforms>
            <platform>jsw</platform>
          </platforms>
        </daemon>
      </daemons>
    </configuration>
  </plugin>

我上面的示例使用插件的1.3版,但1.8是本文的最新版本。我希望最新版本可以使用这个配置,但我宁愿发布一些过时但我知道有用的东西。插件的文档在此处有更多示例http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/usage_jsw.html

答案 1 :(得分:-1)

你有Unix工具,如Automake,Autovonf,libtools,make和nmake,但要创建一个开始和停止的脚本我只知道这种方式:https://unix.stackexchange.com/a/20361