IntelliJ使用带时间戳的快照而不是-SNAPSHOT来构建工件

时间:2014-11-28 09:00:39

标签: maven intellij-idea build nexus snapshot

我有一个包含快照依赖项的项目。为简化起见,假设项目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上)。

1 个答案:

答案 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存储库中的代码捆绑在一起。