appassemblermaven插件可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序。插件官网:http://www.mojohaus.org/appassembler/appassembler-maven-plugin/,官网介绍了该插件的详细用法。

appassembler的使用很简单,直接在pom文件中加入插件配置。

生成启动脚本之前,需要有一个启动的类:

  1. package org.cellphone;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  5. import org.springframework.context.annotation.ComponentScan;
  6.  
  7. @EnableAutoConfiguration
  8. @ComponentScan("org.cellphone")
  9. public class WarehouseWeb {
  10.  
  11. public static void main(String[] args) {
  12. SpringApplication.run(WarehouseWeb.class, args);
  13. }
  14. }

1. 生成可执行的启动脚本

  1.         <plugin>
  2. <groupId>org.codehaus.mojo</groupId>
  3. <artifactId>appassembler-maven-plugin</artifactId>
  4. <version>2.0.0</version>
  5. <executions>
  6. <execution>
  7. <id>Make Assembly</id>
  8. <phase>package</phase>
  9. <goals>
  10. <goal>assemble</goal>
  11. </goals>
  12. </execution>
  13. </executions>
  14.  
  15. <configuration>
  16. <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 -->
  17. <repositoryName>lib</repositoryName>
  18. <!-- 可执行脚本的目录 -->
  19. <binFolder>bin</binFolder>
  20. <!-- 配置文件的目标目录 -->
  21. <configurationDirectory>conf</configurationDirectory>
  22. <!-- 拷贝配置文件到上面的目录中 -->
  23. <copyConfigurationDirectory>true</copyConfigurationDirectory>
  24. <!-- 从哪里拷贝配置文件 (默认src/main/config) -->
  25. <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
  26. <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 -->
  27. <repositoryLayout>flat</repositoryLayout>
  28. <encoding>UTF-8</encoding>
  29. <logsDirectory>logs</logsDirectory>
  30. <!-- 生成脚本的后缀 -->
  31. <binFileExtensions>
  32. <unix>.sh</unix>
  33. </binFileExtensions>
  34. <!-- 生成linux, windows两种平台的执行脚本 -->
  35. <platforms>
  36. <platform>windows</platform>
  37. <platform>unix</platform>
  38. </platforms>
  39.  
  40. <programs>
  41. <program>
  42. <!--指定主类,脚本名。会生成shell/bat两种类型,也可用platforms指定运行平台-->
  43. <mainClass>org.cellphone.WarehouseWeb</mainClass>
  44. <!-- 生成的脚本文件的名称,比如start.sh,你也可以根据你的需要命名成其他名字 -->
  45. <name>WAREHOUSE-WEB</name>
  46. </program>
  47. </programs>
  48. </configuration>
  49. </plugin>

执行 mvn package appassembler:assemble,执行完成之后,在target/appassembler目录就有可执行脚本。

2. 生成后台服务程序

  1.         <plugin>
  2. <groupId>org.codehaus.mojo</groupId>
  3. <artifactId>appassembler-maven-plugin</artifactId>
  4. <version>2.0.0</version>
  5. <executions>
  6. <execution>
  7. <id>generate-jsw-scripts</id>
  8. <phase>package</phase>
  9. <goals>
  10. <goal>generate-daemons</goal>
  11. </goals>
  12. </execution>
  13. </executions>
  14.  
  15. <configuration>
  16. <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 -->
  17. <repositoryName>lib</repositoryName>
  18. <!-- 可执行脚本的目录 -->
  19. <binFolder>bin</binFolder>
  20. <!-- 配置文件的目标目录 -->
  21. <configurationDirectory>conf</configurationDirectory>
  22. <!-- 拷贝配置文件到上面的目录中 -->
  23. <copyConfigurationDirectory>true</copyConfigurationDirectory>
  24. <!-- 从哪里拷贝配置文件 (默认src/main/config) -->
  25. <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
  26. <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 -->
  27. <repositoryLayout>flat</repositoryLayout>
  28. <encoding>UTF-8</encoding>
  29. <logsDirectory>logs</logsDirectory>
  30. <daemons>
  31. <daemon>
  32. <id>WAREHOUSE-WEB</id>
  33. <mainClass>org.cellphone.WarehouseWeb</mainClass>
  34. <platforms>
  35. <platform>jsw</platform>
  36. </platforms>
  37. <generatorConfigurations>
  38. <generatorConfiguration>
  39. <generator>jsw</generator>
  40. <includes>
  41. <include>linux-x86-32</include>
  42. <include>linux-x86-64</include>
  43. <include>windows-x86-32</include>
  44. <include>windows-x86-64</include>
  45. </includes>
  46. <configuration>
  47. <property>
  48. <name>configuration.directory.in.classpath.first</name>
  49. <value>conf</value>
  50. </property>
  51. <property>
  52. <name>wrapper.ping.timeout</name>
  53. <value>120</value>
  54. </property>
  55. <property>
  56. <name>set.default.REPO_DIR</name>
  57. <value>lib</value>
  58. </property>
  59. <property>
  60. <name>wrapper.logfile</name>
  61. <value>logs/wrapper.log</value>
  62. </property>
  63. </configuration>
  64. </generatorConfiguration>
  65. </generatorConfigurations>
  66. <jvmSettings>
  67. <!-- jvm参数 -->
  68. <systemProperties>
  69. <systemProperty>com.sun.management.jmxremote</systemProperty>
  70. <systemProperty>com.sun.management.jmxremote.port=1984</systemProperty>
  71. <systemProperty>com.sun.management.jmxremote.authenticate=false</systemProperty>
  72. <systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty>
  73. </systemProperties>
  74. <extraArguments>
  75. <extraArgument>-server</extraArgument>
  76. </extraArguments>
  77. </jvmSettings>
  78. </daemon>
  79. </daemons>
  80. </configuration>
  81. </plugin>

执行mvn clean package appassembler:generate-daemons,执行完成之后,在target\generated-resources\appassembler\jsw\目录里面就有后台运行的程序。

使用appassembler插件生成启动脚本的更多相关文章

  1. Jboot使用appassembler-maven-plugin插件生成启动脚本

    appassembler-maven-plugin介绍: 使用appassembler-maven-plugin插件可自动生成跨平台的启动脚本,可省去手工写脚本的麻烦,而且还可以生成jsw的后台运行程 ...

  2. 使用appassembler-maven-plugin插件生成启动脚本

    appassembler-maven-plugin可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序. 首先pom引入相关依赖 <build> < ...

  3. logstash5生成init脚本后台启动

    默认情况使用rpm包安装完logstash之后没有启动脚本,这一点我觉得算是开发不够彻底.官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑, ...

  4. spring boot打包,依赖、配置文件分离,拷贝启动脚本

    一.最终打包的目录结构 二.项目结构 三.开始 1.最终打包的目录,可根据自己需要修改. <properties> <mzservice.path>${project.buil ...

  5. (转)springboot应用启动原理(一) 将启动脚本嵌入jar

    转:https://segmentfault.com/a/1190000013489340 Spring Boot Takes an opinionated view of building prod ...

  6. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇

    1.简介 通过跟随宏哥的脚步学习宏哥的Jmeter系列文章,.我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fiddler也可以录制Jmter脚 ...

  7. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(22)-如何使用Fiddler生成Jmeter脚本-下篇

    1.简介 今天这篇文章其实和上一篇差不多也是利用一个fiddler的插件进行Jmeter脚本的导出,开始宏哥想要合在一起写一篇文章,可是结果实践的时候,两个插件还是有区别的,因此为了不绕晕小伙伴或者童 ...

  8. busybox rootfs 启动脚本分析(二)

    上次分析了busybox的启动脚本,这次分析一下init.d中一些脚本的内容. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6169678.html h ...

  9. 一篇关于Maven项目的jar包Shell启动脚本

    使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...

随机推荐

  1. Groovy中each、find跳出循环

    在groovy中使用break跳出each或者find的循环会会报错,为什么呢?groovy中each.find方法是一个闭包操作,要想跳出循环要使用 return true,但有几个问题有待研究: ...

  2. R 语言贷款月供数据分析

    #================================================================ #--------------------------------- ...

  3. Django框架model实现数据库增删查改

    1.创建Django工程 https://www.cnblogs.com/CK85/p/10159159.html 2.在model.py中配置生成表格的类对象. from django.db imp ...

  4. OI中的一些模板

    线性筛 #include"cstdio" #include"cstring" #include"iostream" #include&quo ...

  5. 让你跟上nodejs的资源

    For a long time, JavaScript developers hoped for a server-side solution that would allow them to ful ...

  6. 关于log4j知识

    今天下午接触到log4j知识,花了几个小时,百度了一圈,总算是懂了一些. log4j的作用:log4j是一个日志输出的插件专门用来进行日志管理的,根据我的理解就是用来执行我们用来检测程序bug的Sys ...

  7. Java EE大作业之创造class类出现问题-------Implicit super constructor Object() is undefined for default constructor. Mu

    这个学期一直在忙着考驾照的事情,眼看就要期末了.我的大学生活的最后一个大的作业也要来临了.说实话这个学期真的是没有之前的两个学期努力了.不知道是快要毕业的缘故还是真的是把心思用在了驾照上,想着在这次放 ...

  8. 全面认识Docker和基本指令

    Docker逐渐成为虚拟化技术的佼佼者,Java架构师之路接下来会推出一系列的Docker相关技术文章,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引 ...

  9. 弧形菜单2(动画渐入)Kotlin开发(附带java源码)

    弧形菜单2(动画渐入+Kotlin开发) 前言:基于AndroidStudio的采用Kotlin语言开发的动画渐入的弧形菜单...... 效果: 开发环境:AndroidStudio2.2.1+gra ...

  10. IOC和AOP的个人理解

    IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B. 所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B, ...