问题是我想使用位于我的项目依赖项之一的 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**
答案 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)
我能想到的唯一解决方案如下:
maven-dependency-plugin
(unpack-dependencies
goal)将WAR扩展到临时位置。maven-install-plugin
(install-file
goal)将JAR安装到本地存储库。目前,您将为其分配任意groupId
和artifactId
值。这将负责设置依赖项。由于您现在已经分配了groupId
和artifactId
值,因此您可以将它们用作任何其他依赖项。
这应该有效,而且这是我能够思考你所描述的唯一方式。