【问题标题】:scope "provided" does not add in jars in classpath范围“提供”不会在类路径中添加罐子
【发布时间】:2012-06-20 14:46:34
【问题描述】:

我正在使用工件的范围“提供”pom 文件的依赖项。由于“提供”范围,这些依赖 jar 不会添加到 MANIFEST.MF 的类路径中。

您能帮我避免下载 jar,而是将其添加到类路径中。

【问题讨论】:

    标签: java maven classpath


    【解决方案1】:

    好吧,如果您希望它在语义上正确,请删除 <scope>provided</scope> 并将其保留为默认值 (<scope>compile</scope>)。然后为依赖项设置<optional>true</optional>,这样它将被包含在清单的类路径中。

    通过使用provided 范围,您实际上是在说您不希望它出现在清单的类路径中,因为它无论如何都是由容器提供的。

    【讨论】:

    • 非常感谢米哈尔。我在 EAR 中使用上述内容,我指的是 EAR 中的共享库。我可以看到没有下载 jar,但没有引用共享库 jar。你能帮我解决这个问题吗?
    • 对不起,我现在真的不明白你。您能否使用 ABC 来解释您的情况,但说明它们每个的包装是什么以及它们的依赖关系如何。
    • 当然。我会解释的。很抱歉造成混乱.. Michal。我正在使用 Maven。我有一个包装类型为 EJB 的工件 A。我有一个打包EAR的神器B。我在工件 B 中使用 WAR 共享库引用。我在工件 A 中使用 compiletrue 因为所需的 jar 文件位于共享库中。在您的帮助下,我在 EJB 模块清单的类路径中添加了 jar 名称,但是在部署 EAR 文件时,我收到了 classNotFound 异常。这是面临的问题。
    • @MichałKalinowski 您的解决方案的唯一问题是您不能在此 maven 模块上使用依赖项分析 mojo。恕我直言,最好的解决方案是创建一个新的 maven 模块,其中包含 runtime 范围内的所有内容。
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 2020-02-13
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多