P45*_*678 9 java eclipse spring jar maven
我有一个基于spring的应用程序,它执行组件/包扫描,查找特定命名空间内的包.该应用程序在Eclipse中运行完美,我想创建一个可执行的JAR来部署到我们的各种环境.
我已经尝试了各种方法来实现这一点,但唯一可行的是,如果我将依赖项包含在JAR之外的文件夹中.这是我到目前为止所尝试的 -
Maven从这里编译到一个jar,使用这种方法创建单个JAR,并将依赖项作为类包含在内.使用时运行JAR -
"java -jar jarName.jar"
我得到一个错误说明 - "错误:配置问题:无法找到XML架构命名空间的Spring NamespaceHandler http://www.springframework.org/schema/context] "
使用 Eclipse中的Export'As Runnable JAR file',并在Library Handling部分中选择'Extract required libraries to generated JAR'.
这也构建了一个jar,其依赖关系作为其中的类.运行jar时,我得到相同的"错误:配置问题:无法找到XML架构命名空间的Spring NamespaceHandler [ http://www.springframework.org/schema/context] "
使用 Eclipse中的Export'As Runnable JAR file',并在Library Handling部分选择'将所需的库打包到生成的JAR'.
这构建了一个jar,其中的依赖关系作为JAR(而不是类).当我运行此JAR时,我收到以下错误 -
"无法在URL [rsrc:com/company /]下搜索匹配的文件,因为它与文件系统java.io.FileNotFoundException中的目录不对应:URL [rsrc:com/company /]无法解析为绝对文件路径因为它不驻留在文件系统中:rsrc:com/company/at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:210"
所以JAR运行但无法扫描我要求它找到的组件.
使用 Eclipse中的Export'As Runnable JAR file',并在Library Handling部分选择'将所需的库复制到生成的JAR旁边的子文件夹'.
这将创建一个小JAR,其旁边有一个文件夹,其中包含所有依赖项作为JAR.当我运行它时,一切正常!
因此,我不认为这是我的代码的问题,包装弹簧在单个JAR中进行扫描似乎存在问题.这是对的吗?
有没有人对如何构建基于弹簧的应用程序进行包/组件扫描到单个可运行的JAR有任何建议?
答案:
我将以下XML添加到我的POM文件中并且只使用了"mvn package",它创建了一个可用的单个可执行jar.它的工作原理仍然是个谜.
<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>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.company.project.MainApp</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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12267 次 |
| 最近记录: |