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 

经过亲测可用。






手动打包Struts2项目jar文件通常涉及以下步骤: 1. 添加依赖:首先,需要将Struts2及其相关依赖库添加到项目的`WEB-INF/lib`目录下。如果是从项目中移除Maven或Gradle构建工具,这需要手动完成。可以通过下载所需的jar文件并将它们复制到`WEB-INF/lib`目录中来实现。 2. 构建WAR文件:在不使用构建工具的情况下,需要手动创建WAR文件。这通常涉及到将所有静态资源、JSP文件、HTML文件等放置在`WebContent`目录(或相应的目录,取决于你的项目结构)中,然后将整个`WebContent`目录打包成WAR格式。 3. 换WAR为JAR:虽然通常不建议将Web应用程序打包JAR文件,但如果你的需求是必须的,可以使用一些工具比如`One-JAR`或`jarjar`来将WAR文件转换成JAR文件。这些工具允许你将多个库和文件封装到一个单独的JAR中,但这样做会失去WAR结构的一些优势。 4. 修改Main-Class:为了让JAR文件可执行,需要在JAR文件的`META-INF/MANIFEST.MF`文件中指定`Main-Class`属性。这可以通过命令行工具或编辑器手动完成。例如,如果你有一个包含启动类的包名是`com.example.MainClass`,则可以在`MANIFEST.MF`文件中添加如下内容: ``` Main-Class: com.example.MainClass ``` 5. 测试JAR文件:最后,你需要测试生成的JAR文件以确保应用程序运行正常。可以使用命令行运行JAR文件: ``` java -jar yourapp.jar ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值