MAVEN项目打包成可执行JAR,windows环境下将转换成服务

近期项目中做的JAVA小应用程序有些多,但是苦于打包过程比较费劲,主要是因为程序中用了spring和mybatis的依赖,所以打包过程总各种坑,主要还是由于spring一系列配置文件的路径问题,经过各种试错,总算找到一条可行的方法。

1、在MAVEN项目的POM.xml文件中添加以下内容,具体重点的部分都加了注释,自行理解就行。

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>2.3</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<!-- 默认值为true.注意这个属性,如果你用这个插件来deploy,或者发布到中央仓库,这个属性会缩减你的pom文件,会把你依赖的<dependency>干掉 -->
							<createDependencyReducedPom>false</createDependencyReducedPom>
							<transformers>
								<transformer
										implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
									<resource>META-INF/spring.handlers</resource>
								</transformer>
								<transformer
										implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
									<resource>META-INF/spring.schemas</resource>
								</transformer>
								<transformer
										implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<!-- 这个是你的程序入口文件 -->
									<mainClass>com.zlf.dp.main.App</mainClass>
								</transformer>
							</transformers>
							<filters>
								<filter>
									<artifact>*:*</artifact>
									<excludes>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<exclude>META-INF/*.RSA</exclude>
									</excludes>
								</filter>
							</filters>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<finalName>项目名</finalName>
2、使用maven命令进行打包:Mvn clean package 。

----------------------------------------------------打包完成------------------------------------------

打包之后可以正常运行,可是在windows下总会有java执行的dos窗口,所以想着怎么能将其转换为windows的服务,随系统自动启动和运行,不用的时候可以终止服务。

 首先,我们知道jar文件的执行命令为 java -jar 程序绝对路径(如d:\bin\jarName.jar) ,而.bat文件是dos下的批处理文件,可以包含一条或多条命令.。 
 那么我们就可以自建一个.bat文件,然后在里面写入命令java-jar d:\bin\jarName.jar ,然后通过这个bat文件来运行jar 。具体配置方法见下:

1:在jar文件所在目录下新建文本文件 start.txt,编辑内容写入java -jar d:\bin\jarName.jar 保存。重命名文件将.txt改为.bat 
2:下载 instsrv.exe(注册服务用的工具)和srvany.exe(可以把这个看成是一个用来存放服务的外壳) 
3:打开cmd输入命令 d:\mytools\instsrv.exe服务名 d:\mytools\srvany.exe 
4:regedit打开注册表 
5:进入HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/服务名 
6:右键-新建-项 填入 Parameters 
7:打开Parameters,右键-新建-字符串值 Application 
8:双击Application 填入应用程序的绝对路径,如:d:\bin\start.bat 
9:右键-新建-字符串值AppDirectory 
10:双击AppDirectory 填入应用程序的工作目录,如:d:\bin 

经过亲测可用。






猜你喜欢

转载自blog.csdn.net/u011042316/article/details/79136496
今日推荐