I am trying a lot of things to create a p2 repository with all the transitive (OSGI and non OSGI) maven dependencies of my project, but tycho only accepts an osgi.bundle account?
maven-dependency-plugin copy all maven files and tycho-p2-extras-plugin generate metadata for the p2 site. tycho-p2-repository-plugin generate the p2 repository using the previously loaded dependencies /target/source/plugins .
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.genstar</groupId> <version>1.0.0</version> <artifactId>genstar-bundle</artifactId> <packaging>pom</packaging> <properties> <tycho.version>0.26.0</tycho.version> </properties> <dependencies> <dependency> <groupId>org.genstar</groupId> <artifactId>genstar-core</artifactId> <version>1.0</version> </dependency> </dependencies> <repositories> <repository> <snapshots> <enabled>true</enabled> </snapshots> <id>bintray-anrgenstar-genstar-packages</id> <name>bintray</name> <url>http://dl.bintray.com/anrgenstar/genstar-packages</url> </repository> </repositories> <build> <plugins> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <id>copy-bundles-for-publishing</id> <phase>process-resources</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.basedir}/target/source/plugins</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.eclipse.tycho.extras</groupId> <artifactId>tycho-p2-extras-plugin</artifactId> <version>${tycho.version}</version> <executions> <execution> <phase>prepare-package</phase> <goals> <goal>publish-features-and-bundles</goal> </goals> </execution> </executions> <configuration> <includeAllDependencies>true</includeAllDependencies> <compress>false</compress> <append>false</append> <publishArtifacts>true</publishArtifacts> </configuration> </plugin> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-p2-plugin</artifactId> <version>${tycho.version}</version> <executions> <execution> <phase>package</phase> <goals> <goal>category-p2-metadata</goal> </goals> </execution> </executions> <configuration> <target>${basedir}/target/repository</target> <categoryDefinition>${project.basedir}/category.xml</categoryDefinition> </configuration> </plugin> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-p2-repository-plugin</artifactId> <configuration> <includeAllDependencies>true</includeAllDependencies> </configuration> <version>${tycho.version}</version> <executions> <execution> <phase>package</phase> <goals> <goal>archive-repository</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
The maven project dependency tree:
[INFO] --- maven-dependency-plugin:3.0.0:tree (default-cli) @ genstar-bundle --- [INFO] org.genstar:genstar-bundle:pom:1.0.0 [INFO] \- org.genstar:genstar-core:jar:1.0:compile [INFO] +- org.apache.logging.log4j:log4j-api:jar:2.7:compile [INFO] +- org.apache.logging.log4j:log4j-core:jar:2.7:compile [INFO] +- net.sf.opencsv:opencsv:jar:2.3:compile [INFO] +- org.apache.poi:poi-ooxml:jar:3.9:compile [INFO] | +- org.apache.poi:poi:jar:3.9:compile [INFO] | | \- commons-codec:commons-codec:jar:1.5:compile [INFO] | +- org.apache.poi:poi-ooxml-schemas:jar:3.9:compile [INFO] | | \- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile [INFO] | | \- stax:stax-api:jar:1.0.1:compile [INFO] | \- dom4j:dom4j:jar:1.6.1:compile [INFO] | \- xml-apis:xml-apis:jar:1.0.b2:compile [INFO] +- javax.vecmath:vecmath:jar:1.5.2:compile [INFO] +- com.thoughtworks.xstream:xstream:jar:1.4.9:compile [INFO] | +- xmlpull:xmlpull:jar:1.1.3.1:compile [INFO] | \- xpp3:xpp3_min:jar:1.1.4c:compile [INFO] +- com.vividsolutions:jts-core:jar:1.14.0:compile [INFO] \- com.github.yannrichet:Rsession:jar:1.8.3:compile [INFO] +- org.slf4j:slf4j-api:jar:1.7.12:compile [INFO] +- commons-io:commons-io:jar:2.4:compile [INFO] +- com.github.yannrichet:JMathArray:jar:1.0:compile [INFO] | \- gov.nist.math:jama:jar:1.0.3:compile [INFO] +- org.rosuda.REngine:REngine:jar:2.1.0:compile [INFO] \- org.rosuda.REngine:Rserve:jar:1.8.1:compile
And the final repository generated by tycho after mvn clean install contains only:
-rw-r--r-- 1 reyman reyman 50K janv. 19 23:15 genstar-core_1.0.0.jar -rw-r--r-- 1 reyman reyman 166K janv. 19 23:15 javax.vecmath_1.5.2.jar -rw-r--r-- 1 reyman reyman 72K janv. 19 23:15 org.apache.commons.codec_1.5.0.jar -rw-r--r-- 1 reyman reyman 181K janv. 19 23:15 org.apache.commons.io_2.4.0.jar -rw-r--r-- 1 reyman reyman 214K janv. 19 23:15 org.apache.logging.log4j.api_2.7.0.jar -rw-r--r-- 1 reyman reyman 1,3M janv. 19 23:15 org.apache.logging.log4j.core_2.7.0.jar -rw-r--r-- 1 reyman reyman 32K janv. 19 23:15 slf4j.api_1.7.12.jar -rw-r--r-- 1 reyman reyman 537K janv. 19 23:15 xstream_1.4.9.jar
As you can see, there is only one part (osgi package), why? How can I include all transit dependencies loaded by maven maven-dependency-plugin in this p2 repository?
Even an empty category.xml generates artifact.xml that contains these lines that seem to filter osgi.bundle : s
<mappings size='3'> <rule filter='(& (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/> <rule filter='(& (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/> <rule filter='(& (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/> </mappings>
How can I remove these rules in tycho?
source share