使用maven打全量部署的jar包

最近有一个小项目是用jetty轻量级容器,所以需要把所有资源打成一个jar包放到服务器上面跑,这样不需要依赖任何的容器,用起来非常的方便。主要是用的maven的shade打包插件,下面贴上配置:

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>1.2.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<filters>
								<filter>
									<!-- Exclude files that sign a jar (one or multiple of the dependencies). 
										One may not repack a signed jar without this, or you will get a SecurityException 
										at program start.
-->

									<artifact>org.eclipse.jetty.orbit:javax.servlet</artifact>
									<excludes>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<exclude>META-INF/*.RSA</exclude>
									</excludes>
								</filter>
							</filters>
							
							<transformers>
							<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.xxx.xxx.MainStart</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>


       ps:有一次在部署项目的时候遇到问题,不能加载spring的xsd文件,原因是服务器部署平台对于外网端口访问有限制,访问不了 org.springframework.xxx 。所以一直启动不了项目。但是spring会
根据META-INF/spring.schemas文件里面的映射关系,优先从jar包里面加载xsd和tdt文件,原因是spring很多jar包下面都有spring.schemas,打包的时候文件覆盖了,只有最后一个文件的内容,所以要改成追加式方法。需要添加下面代码:

<transformer  implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
	   <resource>META-INF/spring.schemas</resource>  
</transformer>

上述配置,保证了所有jar包里面的spring.schemas文件内容整合在一起,这样spring读取xml的时候不会从外网读取配置做xml的schema或者dtd校验,解决了无法启动的问题。同理,如果打包的时候不需要某一些文件,参考上述excule相关的内容。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值