使用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 打可运行的jar 包括生产.bat和.sh脚本

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

appassembler-maven-plugin

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

maven打包插件:appassembler

1.打包成bat 打包命令:mvn clean package appassembler:assemble plugin> groupId>org....

maven - 使用assembly plugin实现自定义打包

assembly plugin的使用方式比较简单,主要有: 1. 修改pom.xml     pom.xml中设置如下:      build>         plugins>        ...

java web Maven 打包.sh .bat执行脚本

先在项目的pom.xml文件加入 org.codehaus.mojo ...
  • solinyi
  • solinyi
  • 2017年08月17日 20:33
  • 185

appassembler-maven-plugin

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/assemble-mojo.html#extraJvmArguments...

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

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

Maven启动脚本分析

Maven启动脚本分析Maven启动脚本位于%M2_HOME%\bin\mvn.cmd。 本文基于版本3.3.9进行分析。...
  • barlay
  • barlay
  • 2016年10月16日 12:05
  • 316

maven - appassembler-maven-plugin

打包成系统服务 打包命令:mvn clean package appassembler:generate-daemons Usage: { console | start | stop | rest...

maven git 命令

maven git 命令
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用appassembler-maven-plugin插件生成启动脚本
举报原因:
原因补充:

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