Web applications 使用jar内部war的WEB-INF/lib作为依赖项

Web applications 使用jar内部war的WEB-INF/lib作为依赖项,web-applications,maven,dependencies,Web Applications,Maven,Dependencies,问题是,我想使用我的项目的一个依赖项的WEB-INF/lib中的*.jar文件,该依赖项打包为war。 我想在编译时使用这些文件。可能吗 本质上,它看起来大致如下: MyProject pom.xml: ................ a、 不列颠哥伦比亚省 服务 1.0.0 战争 假如 ............... 服务结构: | --WEB-INF | ---lib | ---lib1.jar <- I need thi

问题是,我想使用我的项目的一个依赖项的WEB-INF/lib中的*.jar文件,该依赖项打包为war。 我想在编译时使用这些文件。可能吗

本质上,它看起来大致如下:

MyProject pom.xml:

................ a、 不列颠哥伦比亚省 服务 1.0.0 战争 假如 ............... 服务结构:

|
--WEB-INF
     |
     ---lib
         |
         ---lib1.jar   <-  I need this file on compile time for **MyProject**

是的,这些JAR文件是正确编码的Java JAR/库文件。您可以在其他几个项目中复制和使用这些JAR文件。您可以使用一些提取器工具浏览WAR内容或将其提取到本地目录。

如果您使用的是Eclipse,则需要将这些jar文件添加到应用程序的构建路径中。 用右键单击项目,选择BuildPath,然后配置BuildPath。在此之后,选择库,然后单击AddExternalJAR。选择您的jar文件,就这样。 如果您使用的是Netbeans或其他IDE,则必须执行类似的操作。

您可以使用“解包”选项将依赖项war文件复制到文件夹中,并在早期生命周期阶段从该文件夹中复制文件。如果您喜欢在编译时使用提取的jar,我不确定您是否可以通过maven处理它,因为依赖关系会更早解决?但我不确定。您可以使用将位于目标文件夹中的系统作用域依赖项。

您可以使用提供给lib1的作用域定义依赖项。事实上,如果您将lib1作为Maven工件提供,我强烈建议您这样做


使用maven dependency插件解包war也是可能的,但我不建议将其作为补救措施,因为您需要将lib1依赖项定义为系统类型,我认为这对您不起作用,因为依赖项解析发生在POM文件插值之后,这还为时过早,依赖插件对您几乎没有任何帮助。

我能想到的唯一解决方案是:

创建一个在主模块之前构建的模块,并声明WAR依赖项。 正如其他人所说,使用maven依赖插件将WAR扩展到临时位置。 使用maven安装插件将JAR安装到本地存储库中。此时,您将为它们分配任意的groupId和artifactId值。 这将负责设置依赖项。由于您现在已经分配了groupId和artifactId值,因此可以将它们用作任何其他依赖项


这应该行得通,这是我唯一能想到的方法来完成您描述的任务。

war文件是如何创建的?通过一个多模块maven构建?lib1.jar呢?它是战争多模块构建的一部分吗?让我们假设它是一个黑匣子。没有关于它是如何构建的信息。它来自nexus index。我只想使用Maven配置来实现这一点我只想使用Maven配置来实现这一点Maven依赖插件提取/复制依赖项的时间太晚了。我不相信这会起作用。这取决于它所绑定的生命周期阶段。不幸的是,它不是Maven工件。。。如果我猜您可以将其添加到您的工件库中,我肯定会将其用作提供的依赖项。。。你在用吗?Nexus、Artifactory等等?恐怕我的权限没有那么大。这就是企业环境。但我还是要试试。谢谢你的提示