2014-09-10 2 views

ответ

0

Но в чем проблема? Если вы добавили сторонние плагины на целевую платформу - они будут экспортироваться Tycho. Если у вас есть такие проекты в вашей рабочей области, добавьте pom.xml в каждый из таких проектов с соответствующим типом упаковки: "eclipse-plugin", "eclipse-feature" и т. Д. Если эти проекты распределяются между сервером и клиентом и требуют разных типов упаковки, настройте родительский pom. XML вашего клиента проектов с чем-то, как этот

<module>../commons/pom.osgi.xml</module> 

где pom.osgi.xml содержит тип упаковки для Tycho и проект «Обще» содержит стандартный pom.xml с типом упаковки сервера (например, «баночки»).

UPD: Пример содержания pom.osgi.xml:

<?xml version="1.0" encoding="UTF-8"?><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>com.company</groupId> 
    <version>5.4.0.v20140625-0169</version> 
    <packaging>eclipse-plugin</packaging> 

    <parent> 
     <groupId>com.company</groupId> 
     <artifactId>app.client</artifactId> 
     <version>5.4.0-SNAPSHOT</version> 
     <relativePath>../parent.project.path</relativePath> 
    </parent> 
    <artifactId>com.company.activity</artifactId> 
</project> 

Содержание MANIFEST.MF

Bundle-SymbolicName: com.company.activity 

Кроме того, в обоих версиях pom.osgi.xml и MANIFEST.MF должны соответствовать - поэтому наша система сборки настроена на обновление обоих этих файлов.

UPD 2: Целевая платформа pom.xml:

<properties> 
     <product.dir>${project.basedir}/eclipse</product.dir> 
     <p2.dir>${project.basedir}/../repository/base</p2.dir> 
    </properties> 

    <dependencies> 
     <!-- Eclipse Helios --> 
     <!-- Includes JUnit --> 
     <dependency> 
      <groupId>org.eclipse</groupId> 
      <artifactId>rcp-helios</artifactId> 
      <version>${eclipse.rcp.version}</version> 
      <type>zip</type> 
      <optional>true</optional> 
     </dependency> 

     <!-- Delta Pack for MultiPlatform Build --> 
     <dependency> 
      <groupId>org.eclipse</groupId> 
      <artifactId>delta-pack</artifactId> 
      <version>${eclipse.rcp.version}</version> 
      <classifier>pack</classifier> 
      <type>zip</type> 
      <optional>true</optional> 
     </dependency> 

     <!-- babel.de Language Pack --> 
     <dependency> 
      <groupId>org.eclipse</groupId> 
      <artifactId>BabelLanguagePack-de</artifactId> 
      <version>${eclipse.babel.version}</version> 
      <type>zip</type> 
     </dependency> 

    </dependencies> 

    <build> 

     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.5</version> 
       <executions> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${product.dir}</outputDirectory> 
          <resources> 
           <resource> 
            <directory>${project.basedir}/../ajdt/eclipse</directory> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <id>unpack-eclipseRcp</id> 
         <phase>validate</phase> 
         <goals> 
          <goal>unpack-dependencies</goal> 
         </goals> 
         <configuration> 
          <includeGroupIds>org.eclipse</includeGroupIds> 
          <includeArtifactIds>rcp-helios,delta-pack,BabelLanguagePack-de</includeArtifactIds> 
          <outputDirectory>${product.dir}/../</outputDirectory> 
         </configuration> 
        </execution> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy-dependencies</goal> 
         </goals> 
         <configuration> 
          <excludeArtifactIds>rcp-helios,delta-pack,BabelLanguagePack-de</excludeArtifactIds> 
          <outputDirectory>${product.dir}/plugins</outputDirectory> 
          <overWriteReleases>false</overWriteReleases> 
          <overWriteSnapshots>false</overWriteSnapshots> 
          <overWriteIfNewer>true</overWriteIfNewer> 
          <includeScope>runtime</includeScope> 
          <artifactItems> 
          </artifactItems> 
         </configuration> 
        </execution> 
        <execution> 
         <id>copy</id> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${product.dir}/plugins</outputDirectory> 
          <artifactItems> 
            .... 
            <!-- Jersey --> 
           <artifactItem> 
            <groupId>org.glassfish.jersey.core</groupId> 
            <artifactId>jersey-client</artifactId> 
            <version>${org.glassfish.jersey.core.version}</version> 
            <destFileName>org.glassfish.jersey.core.jersey-client_${org.glassfish.jersey.core.version}.jar</destFileName> 
           </artifactItem> 

           <artifactItem> 
            <groupId>org.glassfish.jersey.core</groupId> 
            <artifactId>jersey-client</artifactId> 
            <version>${org.glassfish.jersey.core.version}</version> 
            <destFileName>org.glassfish.jersey.core.jersey-client-source_${org.glassfish.jersey.core.version}.jar</destFileName> 
           </artifactItem> 

           <!-- SLF4j --> 
           <artifactItem> 
            <groupId>org.slf4j</groupId> 
            <artifactId>slf4j-api</artifactId> 
            <version>${slf4j.version}</version> 
            <destFileName>slf4j.api_${slf4j.version}.jar</destFileName> 
           </artifactItem> 

           <artifactItem> 
            <groupId>ch.qos.logback</groupId> 
            <artifactId>logback-core</artifactId> 
            <version>${ch.qos.logback.version}</version> 
            <destFileName>ch.qos.logback.core_${ch.qos.logback.version}.jar</destFileName> 
           </artifactItem> 
           .... 
           <dependency> 
            <groupId>org.codehaus.jackson</groupId> 
            <artifactId>jackson-mapper-asl</artifactId> 
            <destFileName>jackson-mapper-asl_${jackson-mapper-asl.version}.jar</destFileName> 
            <version>${jackson-mapper-asl.version}</version> 
           </dependency> 

           <dependency> 
            <groupId>org.hamcrest</groupId> 
            <artifactId>hamcrest-all</artifactId> 
            <version>${hamcrest.version}</version> 
            <destFileName>org.hamcrest.all_${hamcrest.version}.jar</destFileName> 
           </dependency> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.eclipse.tycho.extras</groupId> 
       <artifactId>tycho-p2-extras-plugin</artifactId> 
       <version>0.13.0</version> 
       <executions> 
        <execution> 
         <phase>prepare-package</phase> 
         <goals> 
          <goal>publish-features-and-bundles</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <compress>false</compress> 
        <metadataRepositoryLocation>${p2.dir}</metadataRepositoryLocation> 
        <artifactRepositoryLocation>${p2.dir}</artifactRepositoryLocation> 
        <sourceLocation>${product.dir}</sourceLocation> 
        <publishArtifacts>true</publishArtifacts> 
        <append>true</append> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-clean-plugin</artifactId> 
       <version>2.4.1</version> 
       <configuration> 
        <filesets> 
         <fileset> 
          <directory>eclipse</directory> 
          <followSymlinks>false</followSymlinks> 
         </fileset> 
         <fileset> 
          <directory>${p2.dir}</directory> 
          <followSymlinks>false</followSymlinks> 
         </fileset> 
        </filesets> 
       </configuration> 
      </plugin> 
     </plugins> 
+0

Здравствуйте Александр! Большое спасибо за ваш ответ. Я подумал о возможности изменения типа упаковки и конфигурации в качестве профиля на родительском pom, и я мог бы использовать до этого прежде, чем использовать экспортный продукт. Проблема в том, что одно из требований tycho заключается в том, что artifactId он должен быть таким же, как Bundle-SymbolicName, который включен в MANIFEST.MF. И у меня есть настройка с другим именем, поэтому я ищу другие варианты. Я попытаюсь определить на моей целевой платформе. Спасибо! –

+0

@ CristinaGalán, см. Обновленный ответ. –

+0

Привет, Александр! Я попытался создать каталог с необходимыми плагинами, но проблема в том, что платформа Tycho-Target не поддерживает тип каталога. Я попытался включить в качестве зависимости и настроить tycho-платформу с учетом pomDependencies, но все равно не работает. Любая идея, как я могу это сделать? –

Смежные вопросы