resin的“石榴”——为一个项目自动加载maven jar依赖项——但是如何用pom.xml为它们生成jar呢?

iqjalb3h  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(456)

ResinJava服务器有一个整洁的特性,他们称之为石榴(http://www.caucho.com/projects/pomegranate/ )它只允许将各种jar依赖项放在服务器的目录(projectjars/)中,然后从pom.xml文件为web应用加载它们。
问题是:我应该如何把jar放到树脂的项目jar里(只是复制它们不起作用)
细节:
我有一个maven的工作项目,所有依赖项都配置在projects pom.xml文件中。我可以建立一个网络应用程序战争等。
我将jar文件复制到resin的项目jar/中,因为它们是由maven为这个特定的web应用程序生成的。
当我部署war时,resin发现pom.xml并尝试解析依赖关系;不幸的是,它在其存储库(projectjars)中找不到任何工件。
我想这是因为我放在那里的所有jar中都没有打包的meta-inf/maven/pom.xml文件。它们只是普通的jar,就像maven下载的jar一样。
在石榴网站上,他们说resin会扫描项目jar,寻找pom.xml文件的jar,以确定它们的版本。
如何创建包含pom.xml文件的jar?
或者我应该手动将foo-bar-1.0.pom文件从devel机器上的存储库复制到resin的projectjars目录吗(哪一种比所有汽车魔法的目的都要强大)
谢谢你的回答,
致以最诚挚的问候
贺拉斯

bybem2ql

bybem2ql1#

我对石榴规范草案的理解是:
servlet容器可以使用石榴作为 WEB-INF/lib 具有以下优点:
在公共存储库中共享.jar文件,简化管理并减少.war大小
库依赖关系解析,包括处理子模块不兼容的能力
熟悉的maven pom.xml文件,以利用当前的开发实践。
与servlet web应用容器的可选集成
与javacandi(jsr-299)管理器的可选集成
[...]
web应用可能包含可选的 WEB-INF/pom.xml 声明web应用自己的依赖项。
所以我想我们的想法是在战争中把依赖性标记为“提供的” pom.xml 把它们加进去 WEB-INF/pom.xml 在树脂上展开。我还没有测试过这个,所以我可能错了。
事实上,这个石榴看起来很有趣,但我现在还不完全明白。虽然我理解它的好处,但它似乎使战争不便于携带,这是一个很大的缺点。我再挖一点。。。
(编辑:我正在回答下面评论的一个问题)
老实说,我觉得规范草案不是很清楚。不过,我在caucho的博客上发现了这篇石榴模块文章,其中详细介绍了如何让它在网络应用程序中工作:
石榴旨在从企业应用程序的Angular 解决模块版本控制和类加载器问题。尽管我们在幕后做了一些classloader魔术,但是开发者的视角非常简单和清晰:
从你的战争中移除jar
把它们放到resin的projectjars目录中
在maven pom文件中声明jar依赖关系
使用web inf/pom.xml或resin-web.xml将它们导入web应用程序
至少,我理解这些步骤,它们回答了您的问题:您必须手动将jar放到resin的projectjars目录中。这不是我所期望的,但我想我误解了石榴是什么。如果我没有错的话,石榴是osgi的一种替代品,它是关于模块绑定和类加载的巫毒。它使用maven的约定来描述依赖关系,但它不涉及依赖关系管理。

相关问题