我的Maven配置有一个小问题。此处的所有其他问题和答案都不能解决我的问题,因此,我开始了一个新问题。
我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。
当下载工件或构建项目时,它将安装在本地存储库中,因此路径正确。
问题是:当我构建一个SNAPSHOT项目时,它仅安装在本地存储库中(应该是这样,不想每次都将其发布在我的关系上)。当我在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>
从该链接下载并将发布工件(SNAPSHOT和RELEASE)发布到该链接可使用此配置,但是它不使用本地存储库中的工件。
谢谢你的帮助!
您已经配置了SNAPSHOT应该 始终 (<updatePolicy>always</updatePolicy>)从快照链接下载。因此,即使您的本地缓存(~/.m2/repository)具有快照的较新版本,maven 也会尝试从已配置的服务器(http://nexus/content/repositories/snapshots)下载快照。
<updatePolicy>always</updatePolicy>
~/.m2/repository
http://nexus/content/repositories/snapshots
考虑更改快照条目的updatePolicy。例如,如果您有一个CI服务器,每天(早上)将SNAPSHOT部署到snapshot- nexus,请将updatePolicy更改为daily。
daily