我使用竹子来自动构建我们的模块和maven用于构建工具。 它工作正常,但有时如果我需要增加模块的版本(例如从1.0-SNAPSHOT更改为1.1-SNAPSHOT)
我做了以下事情: 1)在同一目录下的svn存储库中标记1.0-SNAPSHOT版本,但是在标签根目录中。这是出于兼容性原因。 2)创建竹子构建计划,构建标记模块。 3)增加模块的版本,在trunk中。
到目前为止一切顺利。但有时当我构建我的客户端项目时,标记的模块不会从maven下载(即使我可以看到它是用竹子正确构建的)并且它在标记之前使用旧的jar。除此之外,maven并不总是下载最后一个jar,我必须从.m2目录手动删除它或更新模块并在我的机器上手动重建(不使用离线模式)。这是痛苦的屁股,但作为开发人员,我可以做到这一点,但我们的项目也是由管理员构建的,他们不知道如何管理这个,他们有时会部署错误的依赖项目,这会导致麻烦:)。 / p>
所以如果有人知道如何解决这个问题,请告诉我。
答案 0 :(得分:2)
查看您的settings.xml
文件。你会发现这样一个部分:
<profile>
<id>FooBar</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>nexus</id>
<!-- use a bogus URL as this gets overwritten by the mirror settings -->
<url>http://central</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<!-- use a bogus URL as this gets overwritten by the mirror settings -->
<url>http://central</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>FooBar</activeProfile>
</activeProfiles>
确保每次在任何地方使用<updatePolicy>always</updatePolicy>
而不是使用本地文件。
答案 1 :(得分:2)
在构建客户端应用程序时尝试mvn deploy -U
,该应用程序依赖于该模块。 -U
参数用于在构建依赖项目时检索最新构建的SNAPSHOT依赖项(不是最新版本,而是最新构建的SNAPSHOT工件),在您的情况下可能是客户端应用程序。