ric*_*ocq 4 java eclipse maven maven-install-plugin
我有一个项目,我需要在Maven上安装一个库,以便我可以在所述项目上使用它.我遇到的问题是所说的库,比如说libA,它本身就有一个依赖,libB,它也是第三方的.
我已使用此代码将两者添加到本地存储库:
mvn install:install-file -Dfile=VerBDConverter.jar -DgroupId=verbdconverter
-DartifactId=verbdconverter -Dversion=1.00 -Dpackaging=jar -DgeneratePom=true
Run Code Online (Sandbox Code Playgroud)
对于lib 2也是如此.问题是,当我转到我的项目的pom并为libA添加<dependency>时,Maven没有选择libB.
问题:毕竟Maven应该得到libA的依赖,但事实并非如此.
A_D*_*teo 11
毕竟,应该是Maven应该获得libA的依赖,但事实并非如此.
不,在你的情况下,Maven不会明白libA需要哪些传递依赖,因为libA是手动安装的,并且在任何地方都没有libB的痕迹.
通常,传递依赖项是在作为已部署应用程序的一部分可用dependencies
的.pom
文件部分中定义的依赖项.该.pom
文件本质上是原始pom.xml
文件的副本,重命名以反映库名称(即artifactId-version.jar
,然后artifactId-version.pom
).
在解析依赖关系时,maven还会检查其.pom
文件,并因此获取有关其依赖关系的信息(这将成为传递依赖关系)并构建(并获取)所需的依赖关系图(即,为每个依赖关系重新创建相同的进程)每个声明的依赖).
通过从指定的远程存储库读取依赖项的项目文件,可以简化此功能.通常,这些项目的所有依赖项都在项目中使用,项目从其父项或其依赖项继承的任何依赖项等都是如此.
注意:大胆是我的.项目文件通常是pom.xml
文件,*.pom
一旦相关工件上传到Maven存储库(或安装到本地Maven缓存中),就会重命名为文件.
根据您的问题,您使用了-DgeneratePom=true
,因此您没有传递libA' pom.xml
文件,但是自动生成了一个新文件
如果没有通过参数提供,则为工件生成最小POM
pomFile
.true
如果本地存储库中还没有现有POM,则默认为.
自动生成的.pom
文件几乎是空的(Maven坐标(groupId,artifactId,版本),但没有任何dependencies
部分),因此Maven会将libA视为没有传递依赖的库:它找不到任何内容,也不能猜测.
因此,您有四种解决方案(按推荐顺序):
pomFile
选项重新安装libA ,或dependencies
部分添加到生成的.pom
文件并向其添加libB,或pom.xml
文件中明确声明libB有关SO的进一步阅读:
归档时间: |
|
查看次数: |
2820 次 |
最近记录: |