2013-12-10 9 views
2

tycho을 사용하여 Eclipse RCP 응용 프로그램을 빌드하고 있습니다. 지금까지는 Eclipse의 빌드 시스템을 사용했지만 야간 스냅 샷을 빌드하려면 tycho를 사용하고 싶습니다. 지금까지 우리 회사에서이 RCP 응용 프로그램을 update-sites로 릴리스했습니다.이 응용 프로그램은 Eclipse의 site.xml 파일보기에서 '모두 빌드'를 사용하여 업데이트합니다.에 이어 타이코로이 동작을 재현하려고했습니다.업데이트 사이트의 위치 정보 업데이트에서

내 문제는 기존 업데이트 사이트 내에 pom.xml을 넣었음에도 불구하고 tycho는 (mvn clean verify 또는 mvn install을 사용하여) 빌드 할 때 새로운 업데이트 사이트를 생성하고 기존 업데이트 사이트 내에서 디렉토리 목표/. 두 번 연속 빌드하면 새로 생성 된 첫 번째 업데이트 사이트가 바뀌고 이 업데이트되고으로 업데이트됩니다. 생성 된 JAR은 동일한 타임 스탬프를 가지고 있지 않기 때문에 나에게 맞는 것 같다.

따라서 내 질문은 : 내 클라이언트가 가장자리 및 이전 버전을 볼 수 있도록 site.xml, artifacts.jar 및 contents.jar 파일을 업데이트하는 Eclipse의 '모두 빌드'동작을 어떻게 모방합니까? 업데이트 사이트)? 보너스로, 나는 target /에서 새로운 것을 생성하는 기존의 업데이트 사이트를 업데이트하는 것을 선호 할 것입니다! 기존 갱신 사이트의

pom.xml 파일은 꽤 표준입니다 :

<project> 
    <modelVersion>4.0.0</modelVersion> 

     <parent> 
     <relativePath>../../daily-build-repo/blah/pom.xml</relativePath> 
     <groupId>com.mycompany</groupId> 
     <artifactId>product_name</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     </parent> 

     <artifactId>com.mycompany.updateSites.nightly</artifactId> 
     <packaging>eclipse-repository</packaging> 

    </project> 

[편집] 나 진전을 oberlies'answer 하지만 아직 작동하지 않습니다. 그의 대답을 좀더 정확하게하기 위해, 내가 만들고 싶은 저장소가 아닌, paven.xml에 pom.xml에 그의 코드를 추가했다고 덧붙이 자. (따라서, 게시 할 마스터 사이트의 참조가 없다.). 이 빌드로 끝나는대로 작동하는 것 같다 :

[INFO] Mirroring to path/to/existing/update/site 

그러나 나는 큰 경고를 얻을 :

[WARNING] Mirror tool: Problems resolving provisioning plan.: [Unable to satisfy dependency from com.mycompany.blah to org.eclipse.ltk.ui.refactoring 0.0.0; Unable to satisfy dependency from com.mycompany.blah to org.eclipse.ltk.ui.refactoring 0.0.0; ...] 

누락 된 모든 의존성 (구축) 나의 회사의 라이브러리 외부 라이브러리됩니다. 모든 라이브러리를 해결할 수 없기 때문에 나는 잘못된 것을하고 있다고 생각합니다. 이상하게도, 동일한 라이브러리의 두 가지 종속성은 com.mycompany.blah의 plugin.xml 파일에서 오는 버전 (3.7.0)과 0.0.0 버전에서 모두 사라진다.

빌드가 성공 했음에도 불구하고 내 업데이트 사이트는 그대로 유지됩니다.

답변

2

출력용으로 만 빌드 출력 디렉토리 (target/)를 사용하는 것이 관례입니다. 즉, 기존 파일은 빌드 결과에 영향을 미치지 않습니다. (IMHO는 많은 의미가 있습니다.)

따라서 기존 p2 저장소에 컨텐츠를 추가하려면 2 단계 접근 방식이 필요합니다. 먼저 새로운 컨텐츠를 새로운 별도의 p2 저장소로 작성한 다음 새 컨텐츠를 복사하십시오 기존 저장소 (일명 "업데이트 사이트")에 저장합니다. 동일한 빌드에서 다음 작업을 수행 할 수도 있습니다.

  • eclipse-repository 모듈을 설정하여 새 콘텐츠를 집계하십시오.

    <plugin> 
        <groupId>org.eclipse.tycho.extras</groupId> 
        <artifactId>tycho-p2-extras-plugin</artifactId> 
        <version>${tycho-extras-version}</version> 
        <executions> 
         <execution> 
         <id>add-to-update-site</id> 
         <phase>install</phase> 
         <goals> 
          <goal>mirror</goal> 
         </goals> 
         <configuration> 
          <source> 
           <repository> 
            <url>${project.build.directory}/repository</url> 
           </repository> 
          </source> 
          <destination>path/to/existing/update/site</destination> 
          <append>true</append> 
         </configuration> 
         </execution> 
        </executions> 
    </plugin> 
    
: 해당 모듈에서
  • 는 다음과 같은 빌드 단계를 추가