使用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 }


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

maven - appassembler-maven-plugin

打包成系统服务 打包命令:mvn clean package appassembler:generate-daemons Usage: { console | start | stop | rest...
  • a294039255
  • a294039255
  • 2017年03月10日 13:37
  • 528

maven打包插件:appassembler

1.打包成bat 打包命令:mvn clean package appassembler:assemble plugin> groupId>org....
  • zhouhao88410234
  • zhouhao88410234
  • 2017年09月08日 15:47
  • 297

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

appassembler-maven-plugin可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序。 插件网址:http://www.mojohaus.o...
  • mn960mn
  • mn960mn
  • 2016年06月01日 10:47
  • 4039

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

org.codehaus.mojo         appassembler-maven-plugin         1.2                              ...
  • frank0417
  • frank0417
  • 2012年12月14日 16:19
  • 6006

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

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

appassembler-maven-plugin

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/usage-program.html ... ...
  • dawnming
  • dawnming
  • 2012年02月16日 16:21
  • 3031

appassembler-maven-plugin

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/assemble-mojo.html#extraJvmArguments...
  • caolaosanahnu
  • caolaosanahnu
  • 2012年09月11日 09:25
  • 1819

详解Maven项目利用java service wrapper将Java程序生成Windows服务

在项目的开发中,有时候需要将Java应用程序打包成Windows服务,我们就直接可以通过windows的服务来启动和关闭java程序了。 本博文将通过有两种方法实现该功能,手动创建法和Maven自动打...
  • a123demi
  • a123demi
  • 2015年01月23日 18:00
  • 3809

win7运行bat文件 一闪而过 解决

1、在*.bat所在的文件夹按住shift 键然后鼠标右键,选择“在此处打开命令窗口”, 2、输入bat文件名称然后回车 这样就不会自动消失(只在win7 x64 上尝试过)...
  • qq173684423
  • qq173684423
  • 2015年10月23日 13:27
  • 12673

怎么让BAT文件不一闪而过

右击文件,编辑打开文件, 在代码末尾回车另起一行加pause,即pause单独一行
  • wanggeying
  • wanggeying
  • 2016年10月20日 11:03
  • 2209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用appassembler-maven-plugin插件生成启动脚本
举报原因:
原因补充:

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