2014-04-29 44 views

回答

1

我將前言本說,我已搜查高和低,最終不得不制定我自己的解決方案來解決這個問題。目前,我推薦使用Apache Commons Daemon(由Tomcat使用),因爲它提供了我嘗試過的最好的守護進程行爲,並且可以合理簡單地編寫一個init腳本。但是,該解決方案實際上並不符合您快速實施的標準。

相反,對於不需要更改代碼的更快解決方案,您可以使用appassembler-maven-plugin。以下是基於實際產品工作配置的示例pom。

下面的配置是爲unix系統管理員構建的。這裏有一些值得注意的事情:

  • 它啓動jetty使用基於xml的入口點爲碼頭,org.eclipse.jetty.xml.XmlConfiguration。我認爲這大致相當於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

+0

很好的答案,謝謝。 –

-1

你有Unix的工具,比如Automake的,Autovonf,libtools,製作和NMAKE而是爲開始創建一個腳本,並停止我知道只有這樣說:https://unix.stackexchange.com/a/20361

+0

像Automake,make這樣的工具與Maven,Java和init腳本無關。 –