2

buildnumber을 사용하여 개미 스크립트의 새 버전 번호를 계산하는 동안 다음 버전을 계산하는 동안 아이비가 최대 20 분 동안 정지합니다. 빌드 수가 늘어 나면 기하 급수적으로 늘어나는 것 같습니다 (테스트하려는 프로젝트에는 약 600 개가 있습니다). 처음에 나는 그것이 때문에 큰 파일 및 해시 점검이 될 줄 알았는데,하지만 내가 디버깅 켜져 있고 본이 1200 시간 :Apache Ivy 빌드 번호가 고통스럽게 느림

어떤 이유 [ivy:buildnumber] using ssh to list all in /Storage/ivy/status/base//module/version [ivy:buildnumber] SShRepository:list called: /Storage/ivy/status/base//module/version [ivy:buildnumber] found 12 urls [ivy:buildnumber] 0 matched /Storage/ivy/status/base//module/version/[artifact]-version.jar

, 그것은 모든 디렉토리를 통해 재귀되는 몇 가지를 찾을 수 jar 파일을 찾고, 원하는 것을 찾지 못하면 두 번째 해석자에게 가서 다시 시도합니다. 물론 어떤 디렉토리에도 항아리가 없기 때문에 결코 일치하는 것을 찾지 못합니다.

는 ivysettings 파일은 다음과 같다 :

<ivysettings> 
     <property name="ivy.checksums" value="" /> 
     <property name="tisivy.host" value="builds.example.com" /> 
     <property name="tisivy.url.path" value="http://${tisivy.host}" /> 

     <property name="tisivy.file.path" value="/Storage/ivy" /> 
     <property name="tisivy.repo.pattern" value="[module]/[revision]" /> 
     <property name="tisivy.artifact.pattern" value="${tisivy.repo.pattern}/[artifact]-[revision].[ext]" /> 

     <settings defaultResolver="url-chain" /> 

     <caches/> 

     <resolvers> 
       <chain name="url-chain" returnFirst="true"> 
         <url name="http"> 
           <ivy pattern="${tisivy.url.path}/status/${tisivy.repo.pattern}/ivy.xml" /> 
           <artifact pattern="${tisivy.url.path}/status/${tisivy.artifact.pattern}" /> 
         </url> 
       </chain> 

       <ssh name="ssh" user="example" userPassword="****************" host="${tisivy.host}" publishPermissions="0644"> 
         <ivy pattern="${tisivy.file.path}/status/${tisivy.repo.pattern}/ivy.xml" /> 
         <artifact pattern="${tisivy.file.path}/status/${tisivy.artifact.pattern}" /> 
       </ssh> 
     </resolvers> 

     <triggers> 
     </triggers> 

     <statuses> 
       <status name="production" integration="false" /> 
       <status name="integration" integration="true" /> 
       <status name="status" integration="false" /> 
     </statuses> 

     <modules> 
     </modules> 

</ivysettings> 

빌드 번호에 대한 호출은 다음과 같습니다 <ivy:buildnumber organisation="org" module="${ivy.module.doubleslash}" revision="${version.base}" />

나는이 문제가 발생한 다른 사람 찾을 수 없습니다, 그래서 난 틀림없이 나는 실수하고있다. 기본 동작은 가능한 모든 리졸버를 검색하는 방법을

<ivy:buildnumber resolver="url-chain" 
       organisation="${ivy.organisation}" 
       module="${ivy.module}" 
       revision="${version.base}"/> 

문서 설명 :

답변

1

나는 일반적으로 사용하는 리졸버 buildnumber 작업을 말한다. (어떤 의미로, 당신이 게시하는 repo는 기본 해석기 설정에 있지 않을 수도 있습니다).

참고 : 그들은 내 담쟁이 파일의 "정보"태그에서 자동으로 설정하고 있기 때문에

  • 나는 ivy.organisationivy.module에게 변수를 사용합니다.
+0

두 리졸버를 모두 사용하는 이유를 알고 있습니다. 나는 그것을 http와 ssh를 사용하여 fall back으로 설정했다. (그들은 둘 다 같은 저장소를보고있다.) 질문은 정말로 그것이 내가 찾지 말라고 말한 .jar에 대한 검색을하는 이유입니다. 만약 그저 http 만 사용하면 절반으로 시간이 줄어들지 만 가장 큰 숫자를 찾으려면 10 분이 걸린다는 것은 여전히 ​​우스운 일입니다. – kjones603

+0

@ user2576621 ssh 해결은 체인에 포함되어 있지 않습니다. 두 가지 모두를 확인하는 이유는 이것이 기본 동작 (설명 됨)이기 때문입니다. 항아리를 찾는 것에 관해서는 당신이 조회를 위해 말한 적이 없다 ... 나는 이해하지 못한다. (당신은 질문에서 그 값이 불특정 인 "ivy.module.doubleslash"라는 속성을 사용하고있다). 마지막으로, HTTP 프로토콜을 사용하여 검색하는 것이 더 빠를 것입니다. SSH 연결의 설정 비용은 각 모듈 조회에 대해 매우 비쌉니다. 분명히 일종의 연결 풀링이 더 효율적으로 만들 것이지만 나는 정말로 당신이 두 repos를 모두 검색하는지 이해하지 못한다. –