Tycho 빌드에서 사용할 수있는 기존 Eclipse RCP 애플리케이션의 번들 수가 많습니다. 이 번들에는 아직 p2 저장소가 없으므로이 저장소를 만들었습니다. 설치 과정에서 압축을 풀어야하는 번들이 여전히 JAR로 설치된다는 점을 제외하고는 이미 잘 작동합니다.Eclipse-BundleShape 헤더가없는 Eclipse 패키지 작성 방법
p2 저장소를 만드는 첫 번째 방법은 번들을 Maven 저장소에 배포 한 다음 pomDependency = eclipse-feature
및 eclipse-repository
에 포함하는 것이 좋습니다. 그러나 Tycho는 feature.xml의 unpack
속성을 무시하므로 작동하지 않습니다 (cf. this documentation). 이 문제점에 대한 권장 해결책은 포함 된 번들의 목록에 Eclipse-BundleShape: dir
을 추가하는 것입니다. 나는 그것을 할 수있다 - 그러나 내가 묶음의 수백을 가지고 있기 때문에, 이것은 상당한 노력 일 것이다.
그런 다음 필자에게 "기능 및 번들 게시자 응용 프로그램"을 사용하는 팁을 받았습니다.이 응용 프로그램에서는 기능과 번들 아티팩트가 동시에 p2 저장소에 만들어 지므로 번들 모양에 대한 정보는 feature.xml에서 해당 번들로 복사됩니다.
그러나 이것은 여전히 작동하지 않습니다 : 내가 게시 번들 중 하나unpack="true"
를 설정했지만, 번들이 P2 저장소의은 content.xml에
<instruction key='zipped'>
true
</instruction>
이 없습니다 따라서 설치할 때 포장을 풀지 않습니다. 내가 뭘 잘못했는지 모든 아이디어? 다른 아이디어는 어떻게 작동 시키는가?
이는 P2 저장소 생성을위한 내 의 pom.xml입니다 :
이<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycorp.xyz.expose</groupId>
<artifactId>com.mycorp.xyz.expose.orbit</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.mycorp.xyz.expose</groupId>
<artifactId>com.mycorp.somelib</artifactId>
<version>6.40.0</version>
</dependency>
<!-- and many more... -->
</dependencies>
<build>
<outputDirectory>${project.build.directory}/artifacts</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.9</version>
<executions>
<execution>
<id>copy</id>
<phase>process-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/artifacts/plugins</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-p2-extras-plugin</artifactId>
<version>0.21.0</version>
<executions>
<execution>
<id>publish-features-and-bundles</id>
<phase>compile</phase>
<goals>
<goal>publish-features-and-bundles</goal>
</goals>
<configuration>
<sourceLocation>${project.build.directory}/artifacts</sourceLocation>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-repository-plugin</artifactId>
<version>0.21.0</version>
<executions>
<execution>
<id>assemble</id>
<phase>package</phase>
<goals>
<goal>verify-repository</goal>
<goal>archive-repository</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
프로젝트의 유일한 다른 파일은 SRC/메인/자원에서 다음 feature.xml을입니다/features` :
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="com.mycorp.xyz.expose.orbit"
label="..."
version="1.0.0">
<plugin
id="com.mycorp.somelib"
download-size="0"
install-size="0"
version="0.0.0"
unpack="true"/>
<!-- and many more... -->
</feature>
이것은 내가 현재 내부적으로 가지고있는 (거의 완벽한 해결책으로) 아주 좋은 질문입니다. 저는 다른 사람들이 질문과 답변의 혜택을 누리기 위해 그것을 나눠주고 있습니다. – oberlies