使用jar的war里面的WEB-INF / lib作为依赖

时间:2012-07-13 13:32:35

标签: web-applications maven dependencies

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

Essantialy它看起来更像/更像这样:

MyProject pom.xml:

<dependencies>
        ................
        <dependency>
            <groupId>a.b.c</groupId>
            <artifactId>service</artifactId>
            <version>1.0.0</version>
            <type>war</type>
            <scope>provided</scope>
        </dependency>
        ...............
</dependencies>

service.war 结构:

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

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

maven-dependency-plugin将依赖战争文件复制到具有解压缩选项的文件夹中,并在早期生命周期阶段从中复制文件。如果你想在编译期间使用提取的jar我不确定你是否可以通过maven处理它,导致依赖关系会更早解决吗?但我不确定。您可以使用系统范围的依赖项,该依赖项将位于目标文件夹中。

答案 3 :(得分:0)

您可以为lib1定义一个<dependency/>范围为“提供”。如果您将lib1作为Maven工件提供,我实际上强烈推荐这个。

使用maven依赖插件解包战争也是可能的,但我不会真的推荐这个作为你的情况的补救措施,因为你需要将lib1依赖关系定义为系统类型,我不相信为你工作,因为依赖解析在插入POM文件后发生,这太早了,依赖插件对你来说几乎没有任何作用。

答案 4 :(得分:0)

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

  • 创建一个在主要模块之前构建的模块,并声明WAR依赖项。
  • 正如其他人所说,使用maven-dependency-pluginunpack-dependencies goal)将WAR扩展到临时位置。
  • 使用maven-install-plugininstall-file goal)将JAR安装到本地存储库。目前,您将为其分配任意groupIdartifactId值。

这将负责设置依赖项。由于您现在已经分配了groupIdartifactId值,因此您可以将它们用作任何其他依赖项。

这应该有效,而且这是我能够思考你所描述的唯一方式。