这个问题已经过时,不再相关.我已经转移到Gradle进行项目构建,无法再验证答案是否有效.
我遇到了Maven的一些问题.我先来描述一下我的项目设置:
Framework
| -- Apache Commons Math 3.0
| -- Bouncy Castle 1.5
| -- etc.. (lots more)
|________
| Client
| | -- GUI libraries
| | -- etc.
|
|________
Server
| -- Server Libraries
| -- etc.
Run Code Online (Sandbox Code Playgroud)
所以基本上我有一个框架,其中包含大多数依赖项,然后是两个项目,"服务器"和"客户端",它们包含自己的BUT,框架也是一个依赖项(作为Framework的一个模块).我将Framework项目安装到我的本地存储库中,我的项目都可以看到Framework-Native代码(也就是我自己的逻辑).但是,他们似乎无法使用框架项目的任何依赖项.在尝试构建任何"子"项目时,我得到了这个:
Invalid POM for de.r2soft.empires.framework:Framework:jar:Alpha-1.2,
transitive dependencies (if any) will not be available,
enable debug logging for more details
Run Code Online (Sandbox Code Playgroud)
我试图找到这背后的原因(或更好的解决方案),但没有发现任何解决我的问题.希望有人可以提供帮助.我的maven版本似乎是3.2.1(这就是-version告诉我的反正)
这是我的framework-pom.xml和pastebin上的client-pom.xml:
框架:http://pastebin.com/cceZECaT
客户:http://pastebin.com/1Cuxve5F
感谢帮助.
Omr*_*tor 26
其中一个原因是当您依赖父pom过时的项目时.如果您在不安装/部署父pom的情况下更新父pom,通常会发生这种情况.
要查看是否是这种情况,只需运行mvn dependency:tree -X
并搜索确切的错误.它会提到它错过了你知道的在父pom中的东西,而不是你所依赖的神器(例如jar版本).
修复非常简单:使用mvn install -N
并重新尝试安装父pom
在运行客户端项目之前,本地存储库中的框架工件可用,因为两个项目之间没有耦合(客户端工件不是您的框架项目的)。install
module
因此,要解决该问题,您应该mvn install
在Framework项目上运行,以便将打包的 jar 复制到本地存储库。然后,当您在客户端项目上运行某些 Maven 阶段时,就由 Maven 来发现和找到它。
要在组织之间共享您的工件,您应该将您的工件部署(上传)到 Nexus 托管镜像。
归档时间: |
|
查看次数: |
58609 次 |
最近记录: |