maven工程打包遇到Unable to locate Spring NamespaceHandler for XML schema namespace问题_Ynff的博客-程序员秘密_此处不允许使用元素descriptorrefs

技术标签: maven-assembly-plugi  maven  maven-shade-plugin  

        以下的内容只是作为自己学习的一个记录,如果有错或者涉及您的内容,请私信告知,不喜勿喷!谢谢!

       当你在本地电脑上用eclipse写了一个普通的maven工程,而且将来要放到服务器上,你就需要用到maven的打包,由于是一个普通的java项目,所以只需打包成jar包就可以了(web项目需要打包成war包).我们只需要在pom.xml上加上相应的插件就可以了,最后我选择了maven-shade-plugin这种方式用来打包.在我第一次接触的时候,我用到了二种打jar包的插件,maven-assembly-plugin和maven-shade-plugin.pom.xml内容如下

 <plugin>

<artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.xxx.xxx</mainClass>   包含main方法的类
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef> 将依赖包一起打包
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>                        执行器 mvn assembly:assembly
                        <id>make-assembly</id>         是个名字,可以任意
                        <phase>package</phase>         绑定到package生命周期阶段上
                        <goals>
                            <goal>single</goal>        只运行一次
                        </goals>
                    </execution>
                </executions>
    </plugin>




 <plugin>

    <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.7.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <filters>
                            <filter>
                                <artifact>:</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.ManifestResourceTransformer">
                                <mainClass>com.xxx.xxx</mainClass>
                            </transformer>
                            <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>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

         上述两种方法中的mainclass标签是你写的项目中,包含main方法的类,至于我为什么最终会选择maven-shade-plugin这种方式,是因为之前在使用maven-assembly-plugin的时候,在本地运行没有任何问题,而当我们放到linux上运行jar包的时候,就会出现错误Unable to locate Spring NamespaceHandler for XML schema namespace[http://www.springframework.org/schema/context]等等之类的错误,错误原因大概是因为由于项目中用到了spring框架,而当我们在项目中使用spring的多个内容的时候,包含了相同名字的文件,通过看网上的解决办法,发现maven-shade-plugin这个插件的打jar包方式可以解决该问题,上述pom.xml上的<transformer>标签中的内容就是解决该问题的!

    另外将自己将jar包上传到linux的一些内容记录一下:使用的是SecureCRTPortable工具中的SFTP方式,找到自己本地电脑jar包的存放位置,命令是lcd+存放路径,然后使用  put+该jar包名字   的方式进行上传,linux上运行jar包方法 java -jar -xxx,命令中的xxx是jar包名字,ps -ef | grep java 可以看到正在运行的java进程!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bljbljbljbljblj/article/details/52484595

智能推荐

5种分布式事务解决方案优缺点对比_PolarisHuster的博客-程序员秘密

转载自:https://www.toutiao.com/a6717432946736759299/?app=news_article_lite&amp;is_hit_share_recommend=0&amp;tt_from=copy_link&amp;utm_source=copy_link&amp;utm_medium=toutiao_ios&amp;utm_campaign=client_s...

人人都是数据分析师:Tableau应用实战(二)数据连接与管理_Ian_安安的博客-程序员秘密

连接数据源是利用Tableau进行数据分析的第一步,Tableau拥有强大的数据连接能力,支持几乎所有的主流数据源类型。 本节目标:实现多表联接查询和多数据源数据关联,创建、管理和操作数据源。Tableau元数据管理分为三层:数据连接层(Connection)、数据模型层(DataModel)和数据可视化层(VizQL)。Tableau中的数据连接层 数据连接层的数据连接信息包括数据库...

Lua cjson安装及部署_平淡风云的博客-程序员秘密

在安装lua-cjson时在网上查找了很多文章,关于具体的安装方法众说纷纭,主要原因是因为lua-cjson在安装时需要进行配置的更改,以下是经过实操得到的具体安装步骤。wget http://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz 下载安装包tar zxvf lua-cjson-2.1.0.tar.gzcd lua-cjson-2.1.0/修改配置文件修改lua版本,默认版本为5.1 (我的当前版本为5.3,可

UCOSII互斥锁的使用_osmutexcreate返回的0_xiaotaiyangzuishuai的博客-程序员秘密

互斥性信号量的使用互斥型信号量的使用与信号量的使用差不多,但还需要一个较高的空闲优先级,这个级别要比使用这个互斥型信号量的所有任务优先级都高(数字更小)建立互斥型信号量:OS_EVENT *OSMutexCreate(INT8U prio,INT8U *err)返回值赋给信号量参数prio:较高的空闲优先级,用于任务提权参数err:存放出错信息

部署web项目到本地服务器(windows)_前端的小刘老师的博客-程序员秘密

在同一网络下,如果想要让别人能访问到你的项目,或者想用手机访问自己的web项目,那么使用借助Apache将项目部署到本地服务器。在Windows系统中,我们一般借助wampServer(Apache web服务器)进行部署。具体步骤如下:下载wampServer,地址:[wampServer下载地址](https://sourceforge.net/projects/wampserver/)...

adb 常用命令_adb命令查看系统版本_慕涵的博客-程序员秘密

1.连接adbadb connect [ip]:[port] 连接机顶盒(默认端口为5555)2.查看所有连接设备 名称、ip、端口已经状态( device 或 offline )adb devices3.安装apkadb install -r [apk 安装包所在路径(如:d:\a.apk)] 将对应路径的apk 安装包强制(覆盖)安装到机顶盒4.指定设备adb -s [设备名称或...

随便推点

c语言角度转换为弧度程序,C语言中cos(x)或sin(x),x输入的是弧度,怎么输入角度..._囡宝宝的博客-程序员秘密

#define PI (3.14159265358979323846)#define PI_DIV_180 (0.017453292519943296)//π/180#define DegToRad(x)((x)*PI_DIV_180)//角度转换为弧度让我们稍微写几行代码就可以验证其结果:// sin(x)中x角度还是弧度问题.cpp : 定义控制台应用程序的入口点。//#include "st...

Darknet_Yolov4实战(一)_安装Ubuntu+cuda+cudnn_莫陌莫墨的博客-程序员秘密

Darknet_Yolov4实战(一)_安装Ubuntu+cuda+cudnn安装Ubuntu18.04安装显卡驱动安装cuda安装cudnn安装Ubuntu18.04首先关闭你要安装 Ubuntu18.04.1 的目标主机,然后插入启动盘,接着开机,迅速的按住 Del直到进入 bios 设置界面(不同的电脑进入 bios 的按键不同,一般为 F12 或者 Delete 键),通过方向键选择Boot Menu,然后回车.然后选择 设置U盘启动为第一选项,之后进入安装界面,一步步点击即可。注意分区,一

Unity 3D 用脚本来操作游戏对象4(平移、旋转与缩放)_healthLau的博客-程序员秘密

目录平移游戏对象​旋转游戏对象​缩放游戏对象在3D世界里,任何一个游戏对象在创建的时候都会附带transform(变换)组件,并且无法删除。任何一个模型的三维坐标都保存在Vector3容器中,该容器记录模型在x轴、y轴、z轴方向的坐标。平移游戏对象transform.Translate()方法,唯一参数为平移的方向示例:using System....

Ionic实战十一:通过HmacSHA1加密对接Java系统_博主逸尘的博客-程序员秘密

1.Java计算加密代码如下:public class MyClass {public static void main(String[] args){String str = "APP&amp;1122322134534&amp;AbcdeffFDDGHJDS";String finalStr = HmacSha1.genHMAC(str, "123456");System.out.println("finalStr:"+finalStr);// 0PGsANnMw+1yep5TlAXB

如何使用JLink:RTT打印调试日志_星沉地动的博客-程序员秘密

JLink 自V4.92版本以后,添加了RTT功能,可以在没有串口的时候当作调试日志输出端口。一、准备工作只需要在你的项目中添加以下三个文件:SEGGER_RTT.cSEGGER_RTT.hSEGGER_RTT_Conf.h需要注意的是在SEGGER_RTT_Conf.h中定义#define SEGGER_RTT_IN_RAM (0)这样不占用额外内存,即可实现日志打印;在源码中调用SEGGER_...

linux虚拟服务器(lvs)_lvs 虚拟ip 32位_lin_made的博客-程序员秘密

什么是lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性 ...

推荐文章

热门文章

相关标签