用maven 创建基于spring的可执行的jar

在工作中,常常用到用maven 去创建j可执行的jar 文件,当然这会用到maven的插件.maven-assembly-plugin ,在通常的情况下,这是一个简单的好用的插件,但是一旦我们的工程中使用了spring 相关的一些jar 包,这时候问题就出现了; 通常的错误如下:Unable to create application context: Unable to locate Spring NamespaceHandler
(...) 意思也很明确,要么是 schema 找不到,如果你能连接到互联网的话,可能也不会有错,加入你不能连接外网,只能在局域网的话,问题就出来了。因为找不到相关的schema . 但实际上,这些 schema 是存在与spring 的jar包中的,所以要配置路径。

如下就是 maven 的解决方法, 配置pom.xml 。
程序代码 程序代码

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>1.7</version>

  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <finalName>my-spring-app</finalName>
        <shadedArtifactAttached>true</shadedArtifactAttached>
        <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>com.yihaomen.Clazz</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>
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
            <resource>META-INF/spring.tooling</resource>
          </transformer>
        </transformers>

      </configuration>
    </execution>
  </executions>
</plugin>


里面要注意 mainClass 的配置,要匹配你的CLASS.

在做了这些配置之后,你可以用 mvn package 打成jar 文件,然后就可以执行了。

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: maven jar spring
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.