Skip to main content
Jump to: navigation, search

Difference between revisions of "Tycho/Additional Tools"

m (tycho-eclipserun-plugin: sample to install eclipse)
(format xml)
Line 11: Line 11:
 
<pre>
 
<pre>
 
<build>
 
<build>
<plugins>
+
    <plugins>
<plugin>
+
        <plugin>
<groupId>org.eclipse.tycho.extras</groupId>
+
            <groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-p2-extras-plugin</artifactId>
+
            <artifactId>tycho-p2-extras-plugin</artifactId>
<version>${tycho-version}</version>
+
            <version>${tycho-version}</version>
<executions>
+
            <executions>
<execution>
+
                <execution>
<phase>prepare-package</phase>
+
                    <phase>prepare-package</phase>
<goals>
+
                    <goals>
<goal>mirror</goal>
+
                        <goal>mirror</goal>
</goals>
+
                    </goals>
</execution>
+
                </execution>
</executions>
+
            </executions>
<configuration>
+
            <configuration>
<source>
+
                <source>
<!-- source repositori(es) to mirror from -->
+
                    <!-- source repositories to mirror from -->
<repository>
+
                    <repository>
<url>http://download.eclipse.org/releases/indigo/</url>
+
                        <url>http://download.eclipse.org/releases/indigo/</url>
<layout>p2</layout>
+
                        <layout>p2</layout>
<!-- sypported layouts are "p2-metadata", "p2-artifacts", and "p2" (for joint repositories) -->
+
                        <!-- supported layouts are "p2-metadata", "p2-artifacts", and "p2" (for joint repositories; default) -->
</repository>
+
                    </repository>
</source>
+
                </source>
  
<!-- starting from here all configuration parameters are optional -->
+
                <!-- starting from here all configuration parameters are optional -->
                                <!-- they are only shown here with default values for documentation purpose -->
+
                <!-- they are only shown here with default values for documentation purpose -->
  
<!-- List of IUs to mirror. If omitted, allIUs will be mirrored. -->
+
                <!-- List of IUs to mirror. If omitted, allIUs will be mirrored. -->
<!-- Omitted IU version element means latest version of the IU -->
+
                <!-- Omitted IU version element means latest version of the IU -->
<ius>
+
                <ius>
<iu>
+
                    <iu>
<id>org.eclipse.rcp.feature.group</id>
+
                        <id>org.eclipse.rcp.feature.group</id>
</iu>
+
                    </iu>
</ius>
+
                </ius>
<!-- The destination directory to mirror to. -->
+
                <!-- The destination directory to mirror to. -->
<destination>${project.build.directory}/repository</destination>
+
                <destination>${project.build.directory}/repository</destination>
<!-- Whether only strict dependencies should be followed. -->
+
                <!-- Whether only strict dependencies should be followed. -->
<!-- "strict" means perfect version match -->
+
                <!-- "strict" means perfect version match -->
<followStrictOnly>false</followStrictOnly>
+
                <followStrictOnly>false</followStrictOnly>
<!-- Whether or not to follow optional requirements. -->
+
                <!-- Whether or not to follow optional requirements. -->
<includeOptional>true</includeOptional>
+
                <includeOptional>true</includeOptional>
<!-- Whether or not to follow non-greedy requirements. -->
+
                <!-- Whether or not to follow non-greedy requirements. -->
<includeNonGreedy>true</includeNonGreedy>
+
                <includeNonGreedy>true</includeNonGreedy>
<!-- filter properties. E.g. filter only one platform -->
+
                <!-- Filter properties. E.g. filter only one platform -->
<filter>
+
                <filter>
<osgi.os>linux</osgi.os>
+
                    <osgi.os>linux</osgi.os>
<osgi.ws>gtk</osgi.ws>
+
                    <osgi.ws>gtk</osgi.ws>
<osgi.arch>x86_64</osgi.arch>
+
                    <osgi.arch>x86_64</osgi.arch>
</filter>
+
                </filter>
<!-- Whether to filter the resulting set of IUs to only -->
+
                <!-- Whether to filter the resulting set of IUs to only -->
<!-- include the latest version of each IU -->
+
                <!-- include the latest version of each IU -->
<latestVersionOnly>false</latestVersionOnly>
+
                <latestVersionOnly>false</latestVersionOnly>
<!-- don't mirror artifacts, only metadata -->
+
                <!-- don't mirror artifacts, only metadata -->
<mirrorMetadataOnly>false</mirrorMetadataOnly>
+
                <mirrorMetadataOnly>false</mirrorMetadataOnly>
<!-- whether to compress the target repo -->
+
                <!-- whether to compress the content.xml/artifacts.xml -->
<compress>true</compress>
+
                <compress>true</compress>
<!-- whether to append to the target repo content -->
+
                <!-- whether to append to the target repository content -->
<append>true</append>
+
                <append>true</append>
</configuration>
+
            </configuration>
</plugin>
+
        </plugin>
</plugins>
+
    </plugins>
 
</build>
 
</build>
 
</pre>
 
</pre>
Line 84: Line 84:
 
<pre>
 
<pre>
 
<project name="Build specific targets and properties" default="noDefault">
 
<project name="Build specific targets and properties" default="noDefault">
<target name="post.build.jars">
+
    <target name="post.build.jars">
<antcall target="build.index"/>
+
        <antcall target="build.index"/>
</target>
+
    </target>
  
<target name="build.index" description="Builds search index for the plug-in: org.eclipse.someplugin.doc.user." if="eclipse.running">
+
    <target name="build.index" description="Builds search index for the plug-in: org.eclipse.someplugin.doc.user." if="eclipse.running">
<help.buildHelpIndex manifest="plugin.xml" destination="."/>
+
        <help.buildHelpIndex manifest="plugin.xml" destination="."/>
</target>
+
    </target>
 
</project>
 
</project>
 
</pre>
 
</pre>
Line 100: Line 100:
 
<pre>
 
<pre>
 
<build>
 
<build>
<plugins>
+
    <plugins>
...
+
        ...
<plugin>
+
        <plugin>
<groupId>org.eclipse.tycho.extras</groupId>
+
            <groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
+
            <artifactId>tycho-eclipserun-plugin</artifactId>
<version>${tycho-version}</version>
+
            <version>${tycho-version}</version>
<configuration>
+
            <configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile customBuildCallbacks.xml build.index</appArgLine>
+
                <appArgLine>-application org.eclipse.ant.core.antRunner -buildfile customBuildCallbacks.xml build.index</appArgLine>
<dependencies>
+
                <dependencies>
<dependency>
+
                    <dependency>
  <artifactId>org.apache.ant</artifactId>
+
                        <artifactId>org.apache.ant</artifactId>
  <type>eclipse-plugin</type>
+
                        <type>eclipse-plugin</type>
</dependency>
+
                    </dependency>
<dependency>
+
                    <dependency>
  <artifactId>org.eclipse.help.base</artifactId>
+
                        <artifactId>org.eclipse.help.base</artifactId>
  <type>eclipse-plugin</type>
+
                        <type>eclipse-plugin</type>
</dependency>
+
                    </dependency>
</dependencies>
+
                </dependencies>
</configuration>
+
            </configuration>
<executions>
+
            <executions>
<execution>
+
                <execution>
<goals>
+
                    <goals>
<goal>eclipse-run</goal>
+
                        <goal>eclipse-run</goal>
</goals>
+
                    </goals>
<phase>compile</phase>
+
                    <phase>compile</phase>
</execution>
+
                </execution>
</executions>
+
            </executions>
</plugin>
+
        </plugin>
</plugins>
+
    </plugins>
 
</build>
 
</build>
 
 
</pre>
 
</pre>
  
Line 140: Line 139:
  
 
<pre>
 
<pre>
 +
<properties>
 +
    <tycho-extras-version>0.14.0</tycho-extras-version>
 +
    <tycho-version>0.14.1</tycho-version>
 +
    <features>org.eclipse.sdk.ide,org.eclipse.platform,org.eclipse.jdt,org.eclipse.m2e.feature.feature.group,org.eclipse.m2e.logback.feature.feature.group
 +
    </features>
 +
    <sites>${eclipse.mirror.url}/releases/indigo,${eclipse.mirror.url}/technology/m2e/releases,${eclipse.mirror.url}/eclipse/updates/3.7
 +
    </sites>
 +
</properties>
  
    <properties>
+
<build>
        <tycho-extras-version>0.14.0</tycho-extras-version>
+
     <plugins>
        <tycho-version>0.14.1</tycho-version>
+
         <plugin>
<features>org.eclipse.sdk.ide,org.eclipse.platform,org.eclipse.jdt,org.eclipse.m2e.feature.feature.group,org.eclipse.m2e.logback.feature.feature.group </features>
+
            <groupId>org.eclipse.tycho.extras</groupId>
<sites>${eclipse.mirror.url}/releases/indigo,${eclipse.mirror.url}/technology/m2e/releases,${eclipse.mirror.url}/eclipse/updates/3.7</sites>
+
            <artifactId>tycho-eclipserun-plugin</artifactId>
     </properties>
+
            <version>${tycho-extras-version}</version>
 
+
            <configuration>
    <build>
+
                <argLine>-Declipse.p2.mirrors=false</argLine>
         <plugins>
+
                <appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${build.destination} -repository ${sites} -installIUs ${features}</appArgLine>
          <plugin>
+
                <dependencies>
                <groupId>org.eclipse.tycho.extras</groupId>
+
                    <dependency>
                <artifactId>tycho-eclipserun-plugin</artifactId>
+
                        <artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
                <version>${tycho-extras-version}</version>
+
                        <type>eclipse-plugin</type>
                <configuration>
+
                    </dependency>
    <argLine>-Declipse.p2.mirrors=false</argLine>
+
                    <dependency>
                    <appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${build.destination} -repository ${sites} -installIUs ${features}</appArgLine>
+
                        <artifactId>org.eclipse.equinox.p2.repository</artifactId>
                    <dependencies>
+
                        <type>eclipse-plugin</type>
                        <dependency>
+
                    </dependency>
                            <artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
+
                    <dependency>
                            <type>eclipse-plugin</type>
+
                        <artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
                        </dependency>
+
                        <type>eclipse-plugin</type>
                        <dependency>
+
                    </dependency>
                            <artifactId>org.eclipse.equinox.p2.repository</artifactId>
+
                    <dependency>
                            <type>eclipse-plugin</type>
+
                        <artifactId>org.eclipse.equinox.p2.touchpoint.eclipse</artifactId>
                        </dependency>
+
                        <type>eclipse-plugin</type>
                        <dependency>
+
                    </dependency>
                            <artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
+
                    <dependency>
                            <type>eclipse-plugin</type>
+
                        <artifactId>org.eclipse.equinox.p2.artifact.repository
                        </dependency>
+
                        </artifactId>
                        <dependency>
+
                        <type>eclipse-plugin</type>
                            <artifactId>org.eclipse.equinox.p2.touchpoint.eclipse</artifactId>
+
                    </dependency>
                            <type>eclipse-plugin</type>
+
                    <dependency>
                        </dependency>
+
                        <artifactId>org.eclipse.equinox.p2.director.app</artifactId>
                        <dependency>
+
                        <type>eclipse-plugin</type>
                            <artifactId>org.eclipse.equinox.p2.artifact.repository</artifactId>
+
                    </dependency>
                            <type>eclipse-plugin</type>
+
                    <dependency>
                        </dependency>
+
                        <artifactId>org.eclipse.equinox.ds</artifactId>
                        <dependency>
+
                        <type>eclipse-plugin</type>
                            <artifactId>org.eclipse.equinox.p2.director.app</artifactId>
+
                    </dependency>
                            <type>eclipse-plugin</type>
+
                </dependencies>
                        </dependency>
+
            </configuration>
                        <dependency>
+
            <executions>
                            <artifactId>org.eclipse.equinox.ds</artifactId>
+
                <execution>
                            <type>eclipse-plugin</type>
+
                    <goals>
                        </dependency>
+
                        <goal>eclipse-run</goal>
                    </dependencies>
+
                    </goals>
                </configuration>
+
                    <phase>compile</phase>
                <executions>
+
                </execution>
                    <execution>
+
            </executions>
                        <goals>
+
        </plugin>
                            <goal>eclipse-run</goal>
+
    </plugins>
                        </goals>
+
</build>
                        <phase>compile</phase>
+
                    </execution>
+
                </executions>
+
            </plugin>
+
        </plugins>
+
    </build>
+
 
</pre>
 
</pre>
  
 
[[Category:Tycho|Additional Tools]]
 
[[Category:Tycho|Additional Tools]]

Revision as of 05:29, 20 March 2012

The Tycho project provides additional tools that may be useful when working with Tycho.

tycho-p2-extras-plugin

The mirror goal of the tycho-p2-extras-plugin copies installable units (plus their corresponding artifacts) from one or more p2 repositories into the build directory. This goal is available since version 0.13.0.

Example usage:

Mirror the org.eclipse.rcp feature from the Indigo p2 repository to target/repository. Filter the platform-specific fragments to only include linux/gtk/x86_64 os/ws/arch.

<build>
    <plugins>
        <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>mirror</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <source>
                    <!-- source repositories to mirror from -->
                    <repository>
                        <url>http://download.eclipse.org/releases/indigo/</url>
                        <layout>p2</layout>
                        <!-- supported layouts are "p2-metadata", "p2-artifacts", and "p2" (for joint repositories; default) -->
                    </repository>
                </source>

                <!-- starting from here all configuration parameters are optional -->
                <!-- they are only shown here with default values for documentation purpose -->

                <!-- List of IUs to mirror. If omitted, allIUs will be mirrored. -->
                <!-- Omitted IU version element means latest version of the IU -->
                <ius>
                    <iu>
                        <id>org.eclipse.rcp.feature.group</id>
                    </iu>
                </ius>
                <!-- The destination directory to mirror to. -->
                <destination>${project.build.directory}/repository</destination>
                <!-- Whether only strict dependencies should be followed. -->
                <!-- "strict" means perfect version match -->
                <followStrictOnly>false</followStrictOnly>
                <!-- Whether or not to follow optional requirements. -->
                <includeOptional>true</includeOptional>
                <!-- Whether or not to follow non-greedy requirements. -->
                <includeNonGreedy>true</includeNonGreedy>
                <!-- Filter properties. E.g. filter only one platform -->
                <filter>
                    <osgi.os>linux</osgi.os>
                    <osgi.ws>gtk</osgi.ws>
                    <osgi.arch>x86_64</osgi.arch>
                </filter>
                <!-- Whether to filter the resulting set of IUs to only -->
                <!-- include the latest version of each IU -->
                <latestVersionOnly>false</latestVersionOnly>
                <!-- don't mirror artifacts, only metadata -->
                <mirrorMetadataOnly>false</mirrorMetadataOnly>
                <!-- whether to compress the content.xml/artifacts.xml -->
                <compress>true</compress>
                <!-- whether to append to the target repository content -->
                <append>true</append>
            </configuration>
        </plugin>
    </plugins>
</build>

The mojo has the same parameters as the p2.mirror ant task

tycho-eclipserun-plugin

This plugin allows to run an Eclipse application from Maven. This plugin is available since version 0.14.0. One use of this plugin is building the documentation index using Eclipse's antRunner and the help.buildHelpIndex Ant task.

Without Tycho, this would typically be done by having an Ant file with the help.buildHelpIndex task. For example, in customBuildCallbacks.xml:

<project name="Build specific targets and properties" default="noDefault">
    <target name="post.build.jars">
        <antcall target="build.index"/>
    </target>

    <target name="build.index" description="Builds search index for the plug-in: org.eclipse.someplugin.doc.user." if="eclipse.running">
        <help.buildHelpIndex manifest="plugin.xml" destination="."/>
    </target>
</project>

tycho-eclipserun-plugin can be used to run Eclipse's antRunner and reuse that Ant file.

org.eclipse.someplugin.doc.user/pom.xml:

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-eclipserun-plugin</artifactId>
            <version>${tycho-version}</version>
            <configuration>
                <appArgLine>-application org.eclipse.ant.core.antRunner -buildfile customBuildCallbacks.xml build.index</appArgLine>
                <dependencies>
                    <dependency>
                        <artifactId>org.apache.ant</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.help.base</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                </dependencies>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>eclipse-run</goal>
                    </goals>
                    <phase>compile</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

For other scenarios, it might be necessary to change the elements in <dependencies>. Also, note that the JVM arguments can be changed with the <argLine> paremeter. A version of the plugin compatible with Tycho 0.13 is available at Eclipse Labs.


For example if you would like to install eclipse usinng this plugin you could try something like:

<properties>
    <tycho-extras-version>0.14.0</tycho-extras-version>
    <tycho-version>0.14.1</tycho-version>
    <features>org.eclipse.sdk.ide,org.eclipse.platform,org.eclipse.jdt,org.eclipse.m2e.feature.feature.group,org.eclipse.m2e.logback.feature.feature.group
    </features>
    <sites>${eclipse.mirror.url}/releases/indigo,${eclipse.mirror.url}/technology/m2e/releases,${eclipse.mirror.url}/eclipse/updates/3.7
    </sites>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-eclipserun-plugin</artifactId>
            <version>${tycho-extras-version}</version>
            <configuration>
                <argLine>-Declipse.p2.mirrors=false</argLine>
                <appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${build.destination} -repository ${sites} -installIUs ${features}</appArgLine>
                <dependencies>
                    <dependency>
                        <artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.equinox.p2.repository</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.equinox.p2.touchpoint.eclipse</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.equinox.p2.artifact.repository
                        </artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.equinox.p2.director.app</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                        <artifactId>org.eclipse.equinox.ds</artifactId>
                        <type>eclipse-plugin</type>
                    </dependency>
                </dependencies>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>eclipse-run</goal>
                    </goals>
                    <phase>compile</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Back to the top