maven打包出现NamespaceHandler for XML schema namespace[http://www.springframework.org/schema/context]解决

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

       当你在本地电脑上用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进程!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值