-1

我们从几个基于 Maven 的项目中组装了一个 war 文件。其中一个项目使用 maven-shade-plugin 在其目标 jar 文件中包含其他库。为了便于讨论,我们将其称为 x.jar。

当 maven 构建 war 文件时,它包含正确的 x.jar 文件,其中包含打包的附加库。

我们使用最新版本(3.4.0)的 Spring Source 将其部署到 Spring Source 中配置的服务器上。服务器是 Sprint TC Server 2.0.3。

一旦项目被部署到服务器(即 Sprint TC Server 2.0),jar 文件(x.jar)就会以某种方式被替换为不正确的小文件,而其中没有打包的库。

这个较小的 x.jar 在部署之前不存在于文件系统中的任何地方,所以看起来像是 Spring Source 自己编译的。

结果我们无法在 Spring Source 中部署我们的系统。你们,伙计们,我们问题的原因或解决方法吗?

- - - - - - 更新 - - - - - -

我们进行了一次测试。我们在部署之前破坏了 maven pom.xml 文件,因此 Spring Source 部署了原始文件而不重新编译它。它导致了正确的部署。

该测试表明 Spring Source 在将 jar 部署到服务器时会静默地重建 jar。

有没有办法阻止它或让它正常工作?

4

1 回答 1

1

不幸的是,我的建议是不要使用 shade 插件,而是使用程序集、依赖项和 jar 插件之间的巧妙组合,有点像这里答案中的那个人:

由 Maven shade 插件构建的无效或损坏的 JAR 文件

如果您在配置它时遇到任何问题,请告诉我。

如果您有服务器的错误日志,最好也发布它们。

于 2013-12-18T21:33:09.277 回答