2013-10-04 4 views
7

У меня небольшая проблема с моей конфигурацией Maven. Все остальные вопросы и ответы здесь не помогли решить мою проблему, поэтому я задаю новый вопрос.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> 

Загрузка из связующих и публикации артефактов (фотоснимок и RELEASE) к связующей работе с этой конфигурацией, но он не использует артефакты из локального хранилища.

Благодарим за помощь!

ответ

14

Вы установили, что SNAPSHOTs должны всегда (<updatePolicy>always</updatePolicy>) быть загружены с вашего моментального снимка. Поэтому, даже если ваш локальный кеш (~/.m2/repository) имеет более новую версию моментального снимка, maven пытается загрузить его с настроенного сервера (http://nexus/content/repositories/snapshots).

Подумайте об изменении updatePolicy для моментального снимка. Например. если у вас есть CI-сервер, который ежедневно развертывает SNAPSHOT (утром) в snapshot-nexus, измените updatePolicy на daily.

+1

mhh. Я устанавливал его всегда на ежедневной основе, но он все еще пытается получить его от связи. –

+4

Как уже упоминалось, maven затем проверяет связь один раз в день. Это можно использовать только в том случае, если у вас есть некоторые снимки (например, если CI-сервер развертывает его). Если у вас никогда не будет shnapshots на связи, то вы должны установить updatePolicy никогда. – MrD

+1

имейте это сейчас. благодаря! –

Смежные вопросы