当前位置: 首页 > 知识库问答 >
问题:

如何将导入和提供的作用域同时应用于maven依赖项?

劳宇
2023-03-14

共有1个答案

单于轶
2023-03-14

如果Y的作用域被标记为已提供,那么是的,Y应该在类路径上,并且是一个胖罐子,特别是当POM可用并且列出了它的依赖项时。如果您仍然没有ClassDeFFound,我会研究一下y.jar--我会假设它的POM是错误的ie声明JAR中没有包含的依赖项。如果Y不是fat jar或者它的POM有缺陷,那么您需要显式地排除它的依赖项,然后将它们作为编译时依赖项添加。可能会把他们遮住。可以在依赖项下使用排除语句。

在这里阅读https://maven.apache.org/guides/introption/introption-to-optional-and-excludes-dependencies.html

就我个人而言,我讨厌依赖派生依赖,通常在我的POM中显式声明它们。如果它们是由Y提供的,那么我将按照提供的范围对它们进行作用,否则,作用范围为compile,并确保它们被隐藏到我的jar中。

 类似资料:
  • 我有一个POM,根据Maven的最佳实践,它应该对组件/系统的依赖项进行分组,以声明使用该组件/系统所需的任何依赖项。(只有分组本身是最佳实践;)) 正常情况下,此pom只将组件(在本例中为systemA)服务(接口)模块声明为作用域依赖项,并将其相应的实现模块声明为作用域依赖项,如下所示: (当然,服务模块的POM和实现模块的POM将声明对systemA模块的进一步依赖关系,例如systemA的

  • 问题内容: 所以快速的背景是我正在创建一个Java程序,该程序使用许多不同的导入 我知道Netbeans找不到这些文件,因为我的计算机上没有这些文件。但是有没有办法让Netbeans自动与org.apache连接并检索这些文件?还是我只需要去下载它们。有人建议使用Maven,但是我不确定这是否是正确的解决方案,或者如何解决? 谢谢 问题答案: 除非您使用Maven结构(请参见此处,Maven入门)

  • 有没有可能从maven artifactory存储库中获得特定版本的依赖项JAR,谁在构建之后已经“提供”了范围。由于如此多的webapps,并且它们中的大多数都具有公共依赖项,所以考虑将所有依赖项都设置为“提供”(这样web-inf/lib将为空),并且在部署期间从artifactory存储库中获得所有特定版本的“提供”JAR(部署的第一步是将JAR复制到Tomcat公共库,然后是war部署)。

  • 问题内容: 有没有一种方法可以将类型依赖项添加到我的POM并获取其所有模块? JavaMail是一个很好的例子。Maven Central Repo的父POM名为:com.sun.mail:all:1.5.0,模块包括:mail,mailapi,mailapijar,smtp,imap,gimap,pop3和dsn。 但是,“所有”人工制品只有一个文件: 是否可以将“所有”人工制品添加为对我的PO

  • 上面的解决方案和对这个pom的简单依赖没有作用域(我看到后者被称为“依赖项分组”)有什么区别?唯一的区别是这样的“分组”依赖项具有较低的优先级,而解决依赖项的优先级?

  • 在构建之后,有可能从maven artifactory存储库中获得特定版本依赖JAR吗?由于有太多的Webapp,并且它们中的大多数都有公共依赖关系,所以考虑将所有依赖关系都作为“提供的”(这样WEB-INF/lib将为空),并在部署期间从artifactory存储库中获得所有特定版本的“提供的”JAR(部署的第一步是将JAR复制到Tomcat common lib中,然后是war部署)。如果可能