我有一个包含快照依赖项的项目。为简化起见,假设项目A依赖于库B-0.1-SNAPSHOT。
A depends on B
B作为快照驻留在Nexus存储库中。我可以看到它存储时间戳,所以Nexus中的实际名称是这样的:B-0.1-20141126.171716-67.jar
执行后:
mvn clean install -U
在项目A上,依赖关系B从Nexus下载到我的本地存储库。在那里,我可以找到两个库B库:
B-0.1-SNAPSHOT.jar
B-0.1-20141126.171716-67.jar
到目前为止一切顺利。
maven构建完成后,我可以看到B-0.1-SNAPSHOT.jar用于构建工件(.war文件)
我还将项目A作为maven项目导入IntelliJ。我在Tomcat上运行它。项目由IntelliJ构建,B-0.1-20141126.171716-67.jar被添加到.war文件中。
最后,我在WEB-INF / lib目录中有。-WAR,同时包含B-0.1-SNAPSHOT.jar和B-0.1-20141126.171716-67.jar。
对我而言,似乎是IntelliJ中的一个错误,因为B-0.1-SNAPSHOT.jar应该从本地maven存储库中获取...而不是timepamped版本。有没有办法迫使IntelliJ采取行动?
Maven版本是3.2.3,IntelliJ 14.0.1(但同样的行为是在13上)。
答案 0 :(得分:1)
我今天遇到了同样的问题,我找到了如何禁用此功能。
模块上的 F4
,然后转到artifacts
,然后选择工件webapp:exploded
的名称,并检查框架底部的show contents
无线电。
转到WEB-INF/lib
并搜索您的家属B-0.1-SNAPSHOT.jar
并展开您将在其中看到compile output
文件夹的行,只需删除它,然后重新打包并运行,您现在只会拥有B-0.1-SNAPSHOT.jar
,带时间戳的那个应该消失。
这样做的缺点是,在IntelliJ中运行mvn install
模块之前,您必须确保B
A
模块,因为IntelliJ不会打包您的依赖项并将其与您刚刚编辑但未安装在本地maven存储库中的代码捆绑在一起。