12

我的 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>

从连接下载并将工件(SNAPSHOT 和 RELEASE)发布到连接使用此配置,但它不使用本地存储库中的工件。

感谢您的帮助!

4

2 回答 2

16

您已配置 SNAPSHOT 应始终( <updatePolicy>always</updatePolicy>) 从您的快照连接中下载。因此,即使您的本地缓存 ( ~/.m2/repository) 具有更新版本的快照,maven 也会尝试从配置的服务器 ( http://nexus/content/repositories/snapshots) 下载它。

考虑更改快照条目的 updatePolicy。例如,如果您有一个 CI 服务器每天(早上)将 SNAPSHOT 部署到快照连接,请将 updatePolicy 更改为daily.

于 2013-10-04T12:07:34.813 回答
0

如果您将配置更改为 <updatePolicy>always</updatePolicy>,它仍然会尝试从 nexus 下载,因为您必须禁用 nexus 配置,pom.xml
记住您的<reposotiry>标签 pom.xml将优先于您在settings.xml

于 2020-08-28T10:40:07.463 回答