[maven] maven이 “MyRepo의 업데이트 간격이 경과 할 때까지 해결을 다시 시도하지 않습니다”라고 말하면 해당 간격은 어디에 지정되어 있습니까?

maven을 사용하여 저장소에 아직 구축하지 않았거나 포함하지 않은 타사 저장소에서 나오는 인공물을 때리는 경우가 있습니다.

Maven 클라이언트에서 아티팩트를 찾을 수 없다는 오류 메시지가 표시됩니다.

http://myrepo:80/artifactory/repo로컬 저장소에 org.jfrog.maven.annomojo : maven-plugin-anno : jar : 1.4.0을 찾지 못한 경우 MyRepo 의 업데이트 간격이 경과하거나 업데이트가 강제 실행될 때까지 해결이 재 시도되지 않습니다. 도움말 1]

이제 나는 무엇을이 방법을 이해하고, 단순히 내 명령을 다시 실행 할 수 있습니다 -U, 일반적으로 물건 잘 작동 밖으로 거기에서 .

그러나이 오류 메시지는 매우 직관적이지 않으며 동료들에게 두통을 줄이려고합니다.

update interval설정을 수정할 수있는 곳이 있는지 알아 내려고 합니다.

  1. 는 IS update interval이 오류 메시지가 클라이언트 측 또는 서버 측 설정에서 언급되는?
  2. 클라이언트 측인 경우 어떻게 구성합니까?
  3. 서버 측 인 경우 누구나 Nexus / Artifactory에서 이러한 설정을 노출하는 방법을 알고 있습니까?


답변

로컬 리포지토리에서 이슈를 다운로드하지 못한 해당 디렉토리를 삭제 하여이 문제를 해결했습니다. 다음에 maven 명령을 실행할 때 아티팩트 다운로드가 다시 트리거됩니다. 따라서 클라이언트 측 설정이라고 말하고 싶습니다.

Nexus 쪽 (서버 저장소 쪽)에서이 문제는 예약 된 작업을 구성하여 해결되었습니다. 클라이언트 측은 -U이미 지적했듯이을 사용하여 수행 됩니다.


답변

로컬 저장소에서 해당 실패한 아티팩트 디렉토리를 삭제할 수 있습니다. 또한 -U목표에서 간단히 사용할 수 있습니다 . 작업을 수행합니다. 이것은 maven 3에서 작동합니다. 따라서 maven 2로 다운 그레이드 할 필요가 없습니다.


답변

관련 문제가 있었지만 Raghuram의 답변이 도움이되었습니다. (나는 아직 그의 대답을 투표 할만큼 평판이 충분하지 않다). NetBeans와 함께 번들로 제공되는 Maven을 사용하고 있는데 동일한 “… 로컬 저장소에 캐시되었습니다. 넥서스의 업데이트 간격이 경과하거나 업데이트가 강제 실행될 때까지 해결이 재 시도되지 않습니다-> [도움말 1]”오류 .

이 문제를 해결하기 위해 <updatePolicy>always</updatePolicy>설정 파일 (C : \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)에 추가했습니다.

<profile>
  <id>nexus</id>
  <!--Enable snapshots for the built in central repo to direct -->
  <!--all requests to nexus via the mirror -->
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </repository>
  </repositories>
 <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </pluginRepository>
  </pluginRepositories>
</profile>


답변

기본적으로 발생하는 것은 maven의 기본 업데이트 정책에 따라입니다 .Maven은 매일 저장소에서 항아리를 가져옵니다. 따라서 첫 번째 시도 중에 인터넷이 작동하지 않으면 24 시간을 소비 할 때 까지이 항아리를 다시 가져 오려고 시도하지 않습니다.

해결 :

어느 쪽이든 사용

mvn -U clean install

여기서 -U는 저장소를 강제로 업데이트합니다.

또는 사용

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>

settings.xml에서


답변

설정 참조 에 따르면 :

updatePolicy : 이 요소는 업데이트 발생 빈도를 지정합니다. Maven은 리포지토리의 maven-metadata 파일에 저장된 로컬 POM의 타임 스탬프를 원격과 비교합니다. 항상, 매일 (기본값), 간격 : X (여기서 X는 분 단위의 정수) 또는 없음 중에서 선택할 수 있습니다.

예:

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>
  ...
</settings>


답변

@ Sanjeev-Gulgani가 제안한대로 새로 설치 (캐시 된 종속성을 재정의) 하여이 문제를 해결할 수는 있지만 mvn -U clean install

문제를 일으키는 캐시 된 종속성을 간단히 제거 할 수도 있습니다.

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId"

자세한 내용은 mvn docs 를 참조하십시오.


답변

이 오류는 때때로 오도 될 수 있습니다. 확인해야 할 2 가지 사항 :

  1. 리포지토리의 종속성에 대한 실제 JAR이 있습니까? 오류 메시지에 검색중인 URL이 포함되어 있으므로 해당 URL로 이동 한 다음 종속성과 일치하는 폴더를 찾으십시오. 항아리가 있습니까? 그렇지 않은 경우 종속성을 변경해야합니다. (예를 들어, 하위 프로젝트를 가리켜 야 할 때 최상위 부모 의존성을 가리킬 수 있습니다)

  2. jar이 원격 저장소에 있으면 로컬 사본을 삭제하십시오. .m2 / repository (ls -a-Linux의 경우 숨겨져 표시됨) 아래 홈 디렉토리에 있습니다 (다르게 구성하지 않은 경우).