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}"/>
문서 설명 :
두 리졸버를 모두 사용하는 이유를 알고 있습니다. 나는 그것을 http와 ssh를 사용하여 fall back으로 설정했다. (그들은 둘 다 같은 저장소를보고있다.) 질문은 정말로 그것이 내가 찾지 말라고 말한 .jar에 대한 검색을하는 이유입니다. 만약 그저 http 만 사용하면 절반으로 시간이 줄어들지 만 가장 큰 숫자를 찾으려면 10 분이 걸린다는 것은 여전히 우스운 일입니다. – kjones603
@ user2576621 ssh 해결은 체인에 포함되어 있지 않습니다. 두 가지 모두를 확인하는 이유는 이것이 기본 동작 (설명 됨)이기 때문입니다. 항아리를 찾는 것에 관해서는 당신이 조회를 위해 말한 적이 없다 ... 나는 이해하지 못한다. (당신은 질문에서 그 값이 불특정 인 "ivy.module.doubleslash"라는 속성을 사용하고있다). 마지막으로, HTTP 프로토콜을 사용하여 검색하는 것이 더 빠를 것입니다. SSH 연결의 설정 비용은 각 모듈 조회에 대해 매우 비쌉니다. 분명히 일종의 연결 풀링이 더 효율적으로 만들 것이지만 나는 정말로 당신이 두 repos를 모두 검색하는지 이해하지 못한다. –