如何使一个Maven模块依赖于另一个?

丹尼尔·普赖登:

好的,我以为我了解如何使用Maven ...

我有一个主项目M具有子项目ABCC包含A所需的一些常用功能(主要是接口)B我可以运行mvn compile jar:jar从项目的根目录(该M目录),并得到JAR文件A.jarB.jarC.jar(所有这些工件的版本当前都是2.0-SNAPSHOT。)

目录中的主pom.xml文件在标签下列出,因此可以通过仅包含引用来进行引用,如下所示:MC<dependencyManagement>ABC

<dependency>
    <groupId>my.project</groupId>
    <artifactId>C</artifactId>
</dependency>

到目前为止,一切都很好。我可以从命令行运行mvn compile,一切正常。但是,当我在NetBeans中打开项目时,它抱怨这个问题:“某些依赖项不在本地存储库中”,并且说缺少的项是C同样,从命令行,如果我切换到AB目录并尝试运行,则会mvn compile收到“生成错误:无法解析工件的信息”。

我希望可以手动转到C.jar构建和运行的位置mvn install:install-file,但是我宁愿找到一个解决方案,使我能够直接在NetBeans(和/或使用m2eclipse的Eclipse)中工作。

我究竟做错了什么?

Pascal Thivent:

Maven依赖于二进制依赖项的概念,并通过本地存储库解决它们。换句话说,如果它们之间有依赖性,则需要在本地存储库中“安装”软件包,编译和打包代码是不够的。为此,您需要运行install(将包安装到本地存储库中,以作为本地其他项目的依赖项)。

旁注:您不应该调用mvn compile jar:jar而是喜欢mvn package首先,运行该package阶段将触发之前的所有阶段package(包括compile)及其package本身。其次,运行package根据项目调用jar:jar,或war:war等等<packaging>有关更多详细信息,请参见生命周期介绍)。这是Maven的最大优势之一:您不需要知道项目是JAR,WAR,EJB等,也不需要运行适当的目标来打包它。只需运行标准化package阶段,Maven即可完成工作(使用默认目标绑定)。

那是关于Maven理论的部分。在IDE内部,为了使使用Maven更加方便,事情可能略有不同。IDE可以使用项目依赖项(即,IDE中对代码的依赖项)而不是二进制依赖项,以便使一个项目中所做的更改在其他模块中可见,而无需运行mvn installEclipse + M2Eclipse就是这种情况。在以下情况下,这也适用于NetBeans(请参阅Dependency Management):

提示:如果打开其他项目所依赖的项目,则其他项目中的图标将更改为“行项目”图标,以表示IDE知道项目之间的链接。但是,仅当groupId,artifactId和version在依赖项和项目声明中均匹配时,才建立这样的链接。经常发生的问题是您在库项目中更改了API签名,但是应用程序没有启动。通常,这是由于应用程序使用的是旧版本的库工件。工件图标可以帮助您查找这些问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:如何从依赖于模块的另一个文件中正确导入函数

如何使用Android Webview运行依赖于另一个库/模块的javascript

在cmake中,如何使一个目标依赖于另一个目标?

Dagger 模块依赖于另一个模块

如何测试依赖于另一个服务(又依赖于Http服务)的服务/组件?

一个CSS类依赖于另一个

PHPUnit测试一个依赖于另一个方法的方法

测试一个对象是否依赖于另一个对象

创建一个依赖于另一个Pod的Pod

Django:一个modelChoiceField 依赖于另一个modelChoiceField

一个按钮依赖于另一个被单击

SBT-如何使InputTask依赖于一个任务而最终依赖于另一个任务

如何编写依赖于另一个定义文件的打字稿定义文件

如何使用 Kotlin/native 生成依赖于另一个的 .framework?

如何使参数的默认值依赖于另一个参数(在Python中)?

如何使Django日期时间字段依赖于另一个字段?

如何在RxJS中创建依赖于另一个Observable的Observable

PHP:如何更改依赖于另一个变量的变量?(新手的东西)

如何使用@InjectMocks依赖于另一个要模拟的类?

如何使QGraphicsItem的位置依赖于另一个QGraphicsItem?

Flask SQLAlchemy:如何添加依赖于另一个表的列?

如何建立依赖于另一个模型的表单集?

如何键入依赖于另一个类参数值的类参数?

如何处理依赖于另一个承诺的承诺循环

如何使 React Hook 依赖于另一个?

如何观察依赖于另一个值vue的值?

如何使tkinter顶层窗口依赖于另一个顶层窗口

如何创建依赖于另一个库的Java库?

如何使1 CSS值依赖于另一个?