Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Tycho/FAQ
Contents
- 1 How to configure HTTP proxy settings during test execution?
- 2 How to use SWTBot or some UI tool for testing?
- 3 How to configure warning/error settings of the OSGi compiler?
- 4 How to build plugin-based products with platform-specific fragments?
- 5 How to test OSGi declarative services?
- 6 How do I include rootfiles?
How to configure HTTP proxy settings during test execution?
Two options:
Manually configure the proxy
<build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <configuration> <argLine>-Dhttp.proxyHost=myproxy -Dhttp.proxyPort=1234</argLine> </configuration> </plugin> </plugins> </build>
and disable the eclipse system proxy setting
if (Platform.isRunning() && getProxyService() != null && getProxyService().isSystemProxiesEnabled() && !getProxyService().hasSystemProxies()) { // XXX e3.5/gtk.x86_64 activate manual proxy configuration which // defaults to Java system properties if system proxy support is // not available getProxyService().setSystemProxiesEnabled(false); getProxyService().setProxiesEnabled(true); }
- or -
Make sure the native org.eclipse.core.net.* fragment for your platform is included in the test runtime so eclipse will pick up proxy settings configured on OS level:
<build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <configuration> <dependencies> <dependency> <type>p2-installable-unit</type> <artifactId>org.eclipse.core.net.[YOUR_PLATFORM]</artifactId> <version>[VERSION]</version> </dependency> </dependencies> </configuration> </plugin> </plugins> </build>
How to use SWTBot or some UI tool for testing?
You need to configure the tycho-surefire-plugin to use the UI:
<build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <configuration> <useUIHarness>true</useUIHarness> <useUIThread>false</useUIThread> </configuration> </plugin> </plugins> </build>
How to configure warning/error settings of the OSGi compiler?
To configure warnings:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-compiler-plugin</artifactId> <version>${tycho-version}</version> <configuration> <compilerArgument>-warn:[+|-]warning_tokens_separated_by_comma</compilerArgument> </configuration> </plugin>
The available warning tokens are listed in the Eclipse help. Same applies for the
-err
argument for configuring errors.
How to build plugin-based products with platform-specific fragments?
First you need to configure all os/ws/arch environments for which you want to build. Example POM snippet:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>target-platform-configuration</artifactId> <version>${tycho-version}</version> <configuration> <resolver>p2</resolver> <environments> <environment> <os>win32</os> <ws>win32</ws> <arch>x86</arch> </environment> <environment> <os>win32</os> <ws>win32</ws> <arch>x86_64</arch> </environment> </environments> </configuration> </plugin>
for plugin-based (as opposed to feature-based) .product files, tycho needs additional os/ws/arch attributes for the fragments in the .product file which are not required by PDE.
Example product file snippet:
<plugin id="org.eclipse.swt.win32.win32.x86" fragment="true" os="win32" ws="win32" arch="x86"/> <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true" os="win32" ws="win32" arch="x86_64"/>
How to test OSGi declarative services?
You need to add bundle org.eclipse.equinox.ds to the test runtime:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <configuration> <dependencies> <dependency> <type>p2-installable-unit</type> <artifactId>org.eclipse.equinox.ds</artifactId> </dependency> </dependencies> </configuration> </plugin>
How do I include rootfiles?
Tycho provides partial support for PDE-style rootfiles. Rootfiles are associated and installed with a feature. See the TYCHO465RootFiles test for an example of using rootfiles.
A different approach is to use the maven-assembly-plugin to assemble a zip file. We do not have a worked example, but Kai Kreuzer documented his approach that was necessary prior to the introduction of rootfile support [1].