使用appassembler插件生成启动脚本
appassemblermaven插件可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序。插件官网:http://www.mojohaus.org/appassembler/appassembler-maven-plugin/,官网介绍了该插件的详细用法。
appassembler的使用很简单,直接在pom文件中加入插件配置。
生成启动脚本之前,需要有一个启动的类:
- package org.cellphone;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
- import org.springframework.context.annotation.ComponentScan;
- @EnableAutoConfiguration
- @ComponentScan("org.cellphone")
- public class WarehouseWeb {
- public static void main(String[] args) {
- SpringApplication.run(WarehouseWeb.class, args);
- }
- }
1. 生成可执行的启动脚本
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>appassembler-maven-plugin</artifactId>
- <version>2.0.0</version>
- <executions>
- <execution>
- <id>Make Assembly</id>
- <phase>package</phase>
- <goals>
- <goal>assemble</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 -->
- <repositoryName>lib</repositoryName>
- <!-- 可执行脚本的目录 -->
- <binFolder>bin</binFolder>
- <!-- 配置文件的目标目录 -->
- <configurationDirectory>conf</configurationDirectory>
- <!-- 拷贝配置文件到上面的目录中 -->
- <copyConfigurationDirectory>true</copyConfigurationDirectory>
- <!-- 从哪里拷贝配置文件 (默认src/main/config) -->
- <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
- <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 -->
- <repositoryLayout>flat</repositoryLayout>
- <encoding>UTF-8</encoding>
- <logsDirectory>logs</logsDirectory>
- <!-- 生成脚本的后缀 -->
- <binFileExtensions>
- <unix>.sh</unix>
- </binFileExtensions>
- <!-- 生成linux, windows两种平台的执行脚本 -->
- <platforms>
- <platform>windows</platform>
- <platform>unix</platform>
- </platforms>
- <programs>
- <program>
- <!--指定主类,脚本名。会生成shell/bat两种类型,也可用platforms指定运行平台-->
- <mainClass>org.cellphone.WarehouseWeb</mainClass>
- <!-- 生成的脚本文件的名称,比如start.sh,你也可以根据你的需要命名成其他名字 -->
- <name>WAREHOUSE-WEB</name>
- </program>
- </programs>
- </configuration>
- </plugin>
执行 mvn package appassembler:assemble,执行完成之后,在target/appassembler目录就有可执行脚本。
2. 生成后台服务程序
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>appassembler-maven-plugin</artifactId>
- <version>2.0.0</version>
- <executions>
- <execution>
- <id>generate-jsw-scripts</id>
- <phase>package</phase>
- <goals>
- <goal>generate-daemons</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 -->
- <repositoryName>lib</repositoryName>
- <!-- 可执行脚本的目录 -->
- <binFolder>bin</binFolder>
- <!-- 配置文件的目标目录 -->
- <configurationDirectory>conf</configurationDirectory>
- <!-- 拷贝配置文件到上面的目录中 -->
- <copyConfigurationDirectory>true</copyConfigurationDirectory>
- <!-- 从哪里拷贝配置文件 (默认src/main/config) -->
- <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
- <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 -->
- <repositoryLayout>flat</repositoryLayout>
- <encoding>UTF-8</encoding>
- <logsDirectory>logs</logsDirectory>
- <daemons>
- <daemon>
- <id>WAREHOUSE-WEB</id>
- <mainClass>org.cellphone.WarehouseWeb</mainClass>
- <platforms>
- <platform>jsw</platform>
- </platforms>
- <generatorConfigurations>
- <generatorConfiguration>
- <generator>jsw</generator>
- <includes>
- <include>linux-x86-32</include>
- <include>linux-x86-64</include>
- <include>windows-x86-32</include>
- <include>windows-x86-64</include>
- </includes>
- <configuration>
- <property>
- <name>configuration.directory.in.classpath.first</name>
- <value>conf</value>
- </property>
- <property>
- <name>wrapper.ping.timeout</name>
- <value>120</value>
- </property>
- <property>
- <name>set.default.REPO_DIR</name>
- <value>lib</value>
- </property>
- <property>
- <name>wrapper.logfile</name>
- <value>logs/wrapper.log</value>
- </property>
- </configuration>
- </generatorConfiguration>
- </generatorConfigurations>
- <jvmSettings>
- <!-- jvm参数 -->
- <systemProperties>
- <systemProperty>com.sun.management.jmxremote</systemProperty>
- <systemProperty>com.sun.management.jmxremote.port=1984</systemProperty>
- <systemProperty>com.sun.management.jmxremote.authenticate=false</systemProperty>
- <systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty>
- </systemProperties>
- <extraArguments>
- <extraArgument>-server</extraArgument>
- </extraArguments>
- </jvmSettings>
- </daemon>
- </daemons>
- </configuration>
- </plugin>
执行mvn clean package appassembler:generate-daemons,执行完成之后,在target\generated-resources\appassembler\jsw\目录里面就有后台运行的程序。
使用appassembler插件生成启动脚本的更多相关文章
- Jboot使用appassembler-maven-plugin插件生成启动脚本
appassembler-maven-plugin介绍: 使用appassembler-maven-plugin插件可自动生成跨平台的启动脚本,可省去手工写脚本的麻烦,而且还可以生成jsw的后台运行程 ...
- 使用appassembler-maven-plugin插件生成启动脚本
appassembler-maven-plugin可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序. 首先pom引入相关依赖 <build> < ...
- logstash5生成init脚本后台启动
默认情况使用rpm包安装完logstash之后没有启动脚本,这一点我觉得算是开发不够彻底.官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑, ...
- spring boot打包,依赖、配置文件分离,拷贝启动脚本
一.最终打包的目录结构 二.项目结构 三.开始 1.最终打包的目录,可根据自己需要修改. <properties> <mzservice.path>${project.buil ...
- (转)springboot应用启动原理(一) 将启动脚本嵌入jar
转:https://segmentfault.com/a/1190000013489340 Spring Boot Takes an opinionated view of building prod ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇
1.简介 通过跟随宏哥的脚步学习宏哥的Jmeter系列文章,.我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fiddler也可以录制Jmter脚 ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(22)-如何使用Fiddler生成Jmeter脚本-下篇
1.简介 今天这篇文章其实和上一篇差不多也是利用一个fiddler的插件进行Jmeter脚本的导出,开始宏哥想要合在一起写一篇文章,可是结果实践的时候,两个插件还是有区别的,因此为了不绕晕小伙伴或者童 ...
- busybox rootfs 启动脚本分析(二)
上次分析了busybox的启动脚本,这次分析一下init.d中一些脚本的内容. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6169678.html h ...
- 一篇关于Maven项目的jar包Shell启动脚本
使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...
随机推荐
- Groovy中each、find跳出循环
在groovy中使用break跳出each或者find的循环会会报错,为什么呢?groovy中each.find方法是一个闭包操作,要想跳出循环要使用 return true,但有几个问题有待研究: ...
- R 语言贷款月供数据分析
#================================================================ #--------------------------------- ...
- Django框架model实现数据库增删查改
1.创建Django工程 https://www.cnblogs.com/CK85/p/10159159.html 2.在model.py中配置生成表格的类对象. from django.db imp ...
- OI中的一些模板
线性筛 #include"cstdio" #include"cstring" #include"iostream" #include&quo ...
- 让你跟上nodejs的资源
For a long time, JavaScript developers hoped for a server-side solution that would allow them to ful ...
- 关于log4j知识
今天下午接触到log4j知识,花了几个小时,百度了一圈,总算是懂了一些. log4j的作用:log4j是一个日志输出的插件专门用来进行日志管理的,根据我的理解就是用来执行我们用来检测程序bug的Sys ...
- Java EE大作业之创造class类出现问题-------Implicit super constructor Object() is undefined for default constructor. Mu
这个学期一直在忙着考驾照的事情,眼看就要期末了.我的大学生活的最后一个大的作业也要来临了.说实话这个学期真的是没有之前的两个学期努力了.不知道是快要毕业的缘故还是真的是把心思用在了驾照上,想着在这次放 ...
- 全面认识Docker和基本指令
Docker逐渐成为虚拟化技术的佼佼者,Java架构师之路接下来会推出一系列的Docker相关技术文章,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引 ...
- 弧形菜单2(动画渐入)Kotlin开发(附带java源码)
弧形菜单2(动画渐入+Kotlin开发) 前言:基于AndroidStudio的采用Kotlin语言开发的动画渐入的弧形菜单...... 效果: 开发环境:AndroidStudio2.2.1+gra ...
- IOC和AOP的个人理解
IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B. 所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B, ...