我们有一系列的Web服务API,我们也为它们编写了客户端,以便我们可以轻松地在其他Java应用程序中重用它们。我现在需要能够在网络服务器之外的环境中使用客户端。我使用 maven-assembly-plugin 创建了一个包含所有客户端依赖项的 zip,除了 wildfly 提供的依赖项外,它运行良好。我将适当的 resteasy jar 文件添加到命令行应用程序中,一切正常。现在我希望能够以 2 种方式打包客户端;有安宁的罐子,没有。apache shade插件看起来是一个不错的选择,但我看不出如何包含项目中未引用的额外依赖项(resteasy)。有人这样做过吗?
编辑: 我已经尝试了 maven-assembly-plugin 和 maven-shade。阴影看起来很有希望,直到我试图部署罐子。我收到安全警告可能是因为它重新打包的依赖项 jar 已签名,因此重新打包它们会导致错误。无论如何,看起来使用配置文件是关键的一部分。我可以在 pom 中设置一个单独的配置文件,该配置文件将包含 resteasy 依赖项,因此仅在需要时包含它们。
对于其他正在研究这个问题的人,我还没有完全解决这个问题,但添加配置文件是关键的一部分。如果您将配置文件添加到您的 pom,则只能在该配置文件下添加 resteasy 依赖项。如果您在该配置文件下添加 maven-assembly-plugin 和 resteasy 依赖项,则可以构建一个包含所有依赖项的 jar,而不会影响您的常规发布。