我的Maven配置有一个小问题。这里的所有其他问题和答案都没有解决我的问题,所以我开始提出一个新问题。
我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。
下载工件或构建项目时,它安装在本地存储库中,因此路径正确。
问题是:当我构建一个SNAPSHOT项目时,它只安装在本地存储库中(应该是这样,不希望每次都在我的nexus上发布它)。当我在pom.xml中构建另一个具有前一个项目作为依赖项的项目时,maven想要从nexus服务器下载它没有找到它的工件,而不是从本地存储库中获取它。
这是我的maven配置:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:\Users\Marc\.m2\repository</localRepository>
<interactiveMode>false</interactiveMode>
<usePluginRegistry>false</usePluginRegistry>
<pluginGroups>
</pluginGroups>
<servers>
<server>
<id>releases</id>
<username>MY_USERNAME</username>
<password>MY_PASSWORD</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<server>
<id>snapshots</id>
<username>MY_USERNAME</username>
<password>MY_PASSWORD</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<server>
<id>nexus</id>
<username>MY_USERNAME</username>
<password>MY_PASSWORD</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
</servers>
<profiles>
<profile>
<id>nexussrv</id>
<repositories>
<repository>
<id>snapshots</id>
<url>http://nexus/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>releases</id>
<url>http://nexus/content/repositories/releases</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>nexus</id>
<url>http://nexus/content/groups/public</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexussrv</activeProfile>
</activeProfiles>
</settings>
从nexus和发布工件(SNAPSHOT和RELEASE)下载到nexus使用此配置,但它不使用本地存储库中的工件。
感谢您的帮助!
答案 0 :(得分:14)
您已配置SNAPSHOT应始终(<updatePolicy>always</updatePolicy>
)从snapshot-nexus下载。因此,即使您的本地缓存(~/.m2/repository
)具有较新版本的快照,maven也会尝试从配置的服务器(http://nexus/content/repositories/snapshots
)下载它。
考虑更改快照条目的updatePolicy。例如。如果您有一个CI服务器,每天(早上)将快照连接到快照连接,请将updatePolicy更改为daily
。
答案 1 :(得分:0)
如果您将配置更改为<updatePolicy>always</updatePolicy>
,它仍将尝试从nexus下载,因为您必须在pom.xml
中禁用nexus配置
请注意,<reposotiry>
中的pom.xml
标签将优先于settings.xml