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

原创 2016年06月01日 10:47:34

appassembler-maven-plugin可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序。

插件网址:http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

appassembler的配置比较简单,在pom.xml的配置文件加入插件配置。


生成启动脚本之前,需要有一个启动的类,示例如下

package com.mall;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main
{
	public static void main(String[] args)
	{
		SpringApplication.run(Main.class, args);
	}
}

一:生成可执行的启动脚本

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>appassembler-maven-plugin</artifactId>
	<version>1.10</version>
	<configuration>
		<!-- 生成linux, windows两种平台的执行脚本 -->
		<platforms>
			<platform>windows</platform>
			<platform>unix</platform>
		</platforms>
		<!-- 根目录 -->
		<assembleDirectory>${project.build.directory}/mall</assembleDirectory>
		<!-- 打包的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>
		<tempDirectory>tmp</tempDirectory>
		<programs>
			<program>
				<id>mall</id>
				<!-- 启动类 -->
				<mainClass>com.mall.Main</mainClass>
				<jvmSettings>
					<extraArguments>
						<extraArgument>-server</extraArgument>
						<extraArgument>-Xmx2G</extraArgument>
						<extraArgument>-Xms2G</extraArgument>
					</extraArguments>
				</jvmSettings>
			</program>
		</programs>
	</configuration>
</plugin>

执行 mvn package appassembler:assemble

执行完成之后,在target/mall目录就有可执行脚本


二:生成后台服务程序

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>appassembler-maven-plugin</artifactId>
	<version>1.10</version>
	<configuration>
		<!-- 根目录 -->
		<assembleDirectory>${project.build.directory}/mall</assembleDirectory>
		<!-- 打包的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>
		<tempDirectory>tmp</tempDirectory>
		<daemons>
			<daemon>
				<id>mall</id>
				<mainClass>com.mall.Main</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>
				</jvmSettings>
			</daemon>
		</daemons>
	</configuration>
</plugin>
执行mvn clean package appassembler:generate-daemons
执行完成之后,在target\generated-resources\appassembler\jsw\mall目录里面就有后台运行的程序

[localhost bin]# ./mall
Usage: ./mall { console | start | stop | restart | status | dump }


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

appassembler-maven-plugin

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/usage-program.html ... ...

Maven启动脚本分析

Maven启动脚本分析Maven启动脚本位于%M2_HOME%\bin\mvn.cmd。 本文基于版本3.3.9进行分析。

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

用Maven自动生成带有sh和bat启动脚本的java应用

java做web开发,导致很多人不知道使用Java如何开发普通的项目,这里我们做个简单的介绍。 java项目一般都是使用脚本启动,比如windows上的bat文件和linux上的sh文件,而要写这些文...

maven 打可运行的jar 包括生产.bat和.sh脚本

org.codehaus.mojo         appassembler-maven-plugin         1.2            ...

maven笔记-插件

入门 常用命令 变量 Maven插件与生命周期 关系图解与执行样例 各插件介绍 1appassembler 11appassemblerassemble 12appassemblercreate-re...

Spring Web Flow 2简化页面流的开发,结合Spring MVC更俊,Spirng Security 3添加安全机制

闲来无事,看看Spring这个生态系统中的各个模块挺不错,简化了很多事情,本文参考Spring Web Flow项目中的booking-mvc这个sample进行了仔细学习,很有收获,该sample主...

《Spring实战》学习笔记-第八章:使用Spring Web Flow

第四版的第八章内容与第三版基本一致。本章内容: 创建会话式web应用程序 定义流程状态和行为 保护web流程

Spring Web Flow 入门demo(一)简单页面跳转 附源码

Spring Web Flow (SWF)是Spring Framework的一个脱离模块。这个模块是Spring Web应用开发模块栈的一部分,Spring Web包含Spring MVC。Spri...

http无状态还是web应用无状态

我们通常说的web应用程序的无状态性的含义是什么呢?   直观的说,“每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接...

springwebflow简单部署

1. 配置相关文件 在 /WEB-INF/lib 目录下导入相关类库 在 webmvc-config.xml 中添加与 Spring Web Flow 集成的配置 添加 Spring Web F...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)