【问题标题】:How to add external folder that contains multiple jars into maven build for web application?如何将包含多个 jar 的外部文件夹添加到 Web 应用程序的 Maven 构建中?
【发布时间】:2016-09-17 21:44:49
【问题描述】:

我正在使用intellij 和 tomcat 服务器来部署我的 spring mvc 应用程序,我还有另一个 3-th 方 jars (10),我想在使用 maven 打包时将它们添加到 war 文件中,有吗一种告诉 maven -> 将所有这些 jars 包含在此文件夹中的方法?

【问题讨论】:

  • 不要那样做——这不是 Maven 的真正用途。分别列出每个罐子,并从 maven Central 或类似的地方获取它们,而不是从您的硬盘驱动器。您的方法不适用于团队,也不适用于未来的开发人员。如果你没有团队,不关心未来,不想遵循标准的 maven 做事方式,那么也许你不应该使用 maven。
  • 问题是我正在使用 eBay SDK,我没有在 ebay 版本旁边的任何 repo 中找到它。

标签: maven tomcat intellij-idea maven-plugin maven-bundle-plugin


【解决方案1】:

如果您想包含文件系统中的单个 jar,则无法将每个 jar 包含在文件夹中:

<dependency>
          <groupId>sun.jdk</groupId>
          <artifactId>tools</artifactId>
          <version>1.5.0</version>
          <scope>system</scope>
          <systemPath>${java.home}/../lib/tools.jar</systemPath>
        </dependency>

见:Maven: System Dependencies

【讨论】:

  • 您应该始终避免使用这样的系统依赖项,它们不可移植,通常不适用于团队。
  • 仍然有问题,在构建项目并使用tomcat运行它时,似乎maven没有将jar文件复制到target\xxx-sanpshot\web-inf\lib文件夹中,只有在复制时文件手动工作,任何其他解决方案如何让 maven 将 jars 文件复制到目标文件夹?
  • 在这种情况下,请参阅此处Maven 2 assembly with dependencies: jar under scope “system” not included,可能您最终会得到@EngineerDollery 的建议(在本地存储库中安装依赖项!!!)
  • 我正在这样做,创建了一个本地 repo,将外部 jar 部署到 @KLajdPaja 本地 repo 文件夹中,但是在部署 war 文件时,我在 target 下的嵌套 lib 文件夹中看不到 eBay jar (我可以在那里看到所有的spring jars)只有在手动将jar文件复制到它正在工作的lib文件夹中时,知道如何强制maven将本地repo打包到war文件中?
  • 这很奇怪,因为 maven 生成的战争副本的所有依赖项,除非范围被定义为提供
【解决方案2】:

ebay SDK 在bintray

<dependency>
  <groupId>com.ebay</groupId>
  <artifactId>sdk</artifactId>
  <version>883</version>
  <type>pom</type>
</dependency>

【讨论】:

  • 谢谢,但问题是 995 版已在 go.developer.ebay.com/javasdk 发布,但不在 bintray 中。不幸的是,eBay 似乎没有按应有的方式维护那里的版本..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 2021-12-28
  • 2018-11-15
  • 2015-09-10
  • 1970-01-01
相关资源
最近更新 更多