- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Resin java 服务器有一个巧妙的功能,他们称之为 pomegranate ( http://www.caucho.com/projects/pomegranate/ ),它允许将各种 jar 依赖项放入服务器目录 (project-jars/) 中,然后从其 pom.xml 为 Web 应用程序加载它们文件。
问题是:我应该如何将 jar 放入树脂的项目 jar 中? (仅仅复制它们是行不通的)
详细信息:
我有一个使用 Maven 的工作项目,所有依赖项都配置在项目 pom.xml 文件。我可以构建网络应用 war 等。
我将 jar 文件复制到了resin的project-jars/,因为它们是由maven为这个特定的网络应用程序生成的。
当我部署 war 时,resin 发现 pom.xml 并尝试解析依赖关系;不幸的是,它无法在其中找到任何文物存储库(项目 jar)。
我想这是因为我放在那里的所有 jar 都没有META-INF/maven/pom.xml 文件打包在其中。它们只是普通的 jar 就像maven下载的那样。
在石榴网站上,他们说树脂会扫描项目 jar 中是否有带有 pom.xml 文件的 jar ,以确定它们的版本。
我应该如何创建包含 pom.xml 文件的 jar?
或者我应该从我的开发版本库中手动复制 foo-bar-1.0.pom 文件机器到resin的project-jars目录? (这违背了所有自动魔法的目的)
感谢您的回答,
致以诚挚的问候
贺拉斯
最佳答案
我对Pomegranate Draft specification的理解是:
Servlet containers can use pomegranate as an extension to the
WEB-INF/lib
with the following benefits:
- Shared .jar files in a common repository, simplifying management and reducing .war sizes
- Library dependency resolution, including the ability to handle sub-module incompatibilities
- Familiar Maven pom.xml files, to take advantage of current development practices.
- Optional integration with Servlet web-app containers
- Optional integration with Java CanDI (JSR-299) managers
[...]
The web-app may contain an optional
WEB-INF/pom.xml
declaring the web-app's own dependencies.
所以我想这个想法是在 war pom.xml
中将依赖项标记为“已提供”,并将它们添加到 WEB-INF/pom.xml
中Resin 上的部署。不过我还没有测试过,所以我可能是错的。
事实上,这个石榴看起来很有趣,但我现在还没有完全理解。虽然我了解它的好处,但它似乎使 WAR 不可移植,这是一个很大的缺点。我会进一步挖掘它......
(编辑:我正在回答下面OP的评论)
说实话,我觉得规范草案不是很清楚。然而,我发现了这个pomegranate modules Caucho 博客上的帖子详细介绍了如何让它在网络应用程序中工作:
Pomegranate is designed to solve themodule versioning and classloaderissues from an enterprise-applicationperspective. Although we’re doing abit of classloader magic behind thescenes, the developer perspective isfairly simple and clean:
- remove jars from your .war
- drop them in Resin’s project-jars directory
- declare jar dependencies in Maven pom files
- import them to your web-app with WEB-INF/pom.xml or in yourresin-web.xml
至少,我理解这些步骤,它们回答了你的问题:你必须手动将 jar 放到 Resin 的 project-jars 目录中。这不是我所期待的,但我认为我误解了石榴的意义。如果我没记错的话,石榴是 OSGI 的一种替代品,它是关于模块捆绑和类加载的巫毒。它使用 Maven 的约定来描述依赖关系,但它与依赖关系管理无关。
关于java - Resin 的 `pomegranate' - 自动神奇加载项目的 Maven jar 依赖项 - 但如何使用 pom.xml 为它们生成 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1663060/
我正在使用 Maven 3.x,我的父 pom 和子 pom 中有以下结构。 父类 com.mygoogle.sample workorder 1.0-SNAPSHOT pom 1.0-SN
我已将各个项目中的所有存储库配置重构为一个父 pom,该父 pom 是为了对存储库和分发管理等内容进行单点配置的特定目的而创建的。据我了解,这应该是最佳实践。将我的父 pom 部署到 Nexus 服务
我尝试使用 mvn help:effective-pom 命令在示例应用程序上生成有效的 pom。 http://books.sonatype.com/mvnref-book/reference/po
在一个项目中,我们有一个名为时间戳的属性,它没有在父 POM 和子 POM 中定义,但仍然可以在 pom.xml 中访问。任何线索将不胜感激。 最佳答案 它可以由插件设置(如 https://www.
我在使用“uploadArchives”上传存档时收到“无法初始化 POM pom-default.xml:无法验证 POM”。我也尝试了 maven-publish 插件,但仍然没有成功。我们将不胜
我创建了一个程序,使用 HTML5 canvas 绘制一个 pom pom,参数大小、x、y、蓬松度和颜色。 pom pom 是通过从中心出来的画线创建的,参数蓬松度决定了从中心出来的股数。我有一个确
我正在关注maven的教程。我有一个非常简单的项目,里面有几个模块。在模块 pom 上,我想通过 ${parent.groupid} 和 ${parent.version} 引用主项目 pom 版本和
当我构建我的项目时,我收到以下警告: [INFO] ------------------------------------------------------------------------ [
我正在尝试构建一个 Maven 项目。我的其他团队成员能够毫无问题地构建它。我收到以下错误: [WARNING] The POM for org.hectorclient:hector-core:ja
我目前正在为 Maven 苦苦挣扎:我有一个由几个嵌套模块组成的复杂项目,对于其中一些模块,我在 POM 中有类似的配置。 我想让它干净。实际上,我想定义一个“runnable-jar”通用配置并在某
我正在将 maven Artifact 推送到 nexus,对于版本号小于子 POM 的父 POM 是否有任何影响? 最佳答案 据我所知没有。多模块项目中的模块版本可能以任何可能的方式有所不同。但是,
我在 Eclipse (Helios) 中有一个项目,带有 Maven pom.xml。我的项目是一个将使用 Hibernate、MySQL 的 Web 应用程序。 但是我在正确处理 pom.xml
repository我的 build.grade 部分已: mavenLocal() //maven { url { 'http://192.168.2
在多模块项目结构中 myApp |-moduleA |---pom.xml |-moduleB |---pom.xml |-pom.xml 如果我在 parent.pom 中有以下属性 4
我为 Maven 插件编写了代码,用于更新 pom 文件中的版本号。但是,当我尝试保存新的 pom 时,它被保存为有效的 pom。有没有办法将其保存为解析之前的样子?谢谢! private Maven
我有一个父 pom 在 pluginManagement 中定义了插件的一些配置项,其中有一个特定的配置。我不想在 child pom 中。 我尝试覆盖我的子 pom 中的其他配置项,这有效,但“删除
我不确定这是否受 Maven 支持。我很感激我能得到的任何帮助。 我有一个定义依赖项和排除项的父 pom。我无法更改父 pom: foo bar 1.0
当前场景: 父pom有一个distributionManagement部分,里面定义了两个repositories(releases和snapshots);引用如下: 父 pom:
似乎有几种方法可以在多项目构建中构建父 pom,我想知道是否有人对每种方式的优点/缺点有任何想法。 拥有父 pom 的最简单方法是将其放在项目的根目录中,即 myproject/ myprojec
我想在我的 Maven 项目中定义一个本地存储库。 我有一个 super pom 和几个子模块。我的文件结构是: /root /repository /child po
我是一名优秀的程序员,十分优秀!