Строить банку для использования в PDE затмения? - PullRequest
0 голосов
/ 10 июня 2010

Я написал приложение, которое использует стороннюю библиотеку. Затем я упаковал его как исполняемый jar-файл с помощью maven-assembly-plugin (создавая jar со всеми зависимостями, включая некоторые из сторонних jar-файлов).

Далее мне нужно добавить этот jar-файл в проект PDE, чтобы его можно было запустить из eclipse. Но чтобы это работало, мне нужно добавить некоторые сторонние зависимости в мой проект PDE, который уже находится в упакованном фляге. Таким образом, я получаю дублированные зависимости. Есть идеи, как этого избежать? Или предложение к документации, которая описывает, как это делается правильно?

Ответы [ 3 ]

1 голос
/ 11 июня 2010

Вы должны собрать jar, это пакет OSGi: он содержит требуемый manifest.mf с идентификатором плагина и номером версии (это не меняет того факта, что jar остается исполняемым).Будьте осторожны, добавив опцию export-packages, чтобы сделать код доступным и для других плагинов / пакетов.

После этого вы можете установить этот jar-файл на целевую платформу, используемую проектом PDE (найдите Targetплатформу в настройках), поэтому он становится доступным для других плагинов по идентификатору (вы можете добавить его как зависимость).

Таким образом, если хотя бы одному плагину нужен ваш jar, он получаетзагружен, но не будет загружен несколько раз.

0 голосов
/ 12 июня 2010

Сейчас я использую плагин maven-bundle-plugin:

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>1.4.0</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
                  <Bundle-Name>${pom.name}</Bundle-Name>
                  <Bundle-Version>${pom.version}</Bundle-Version>
                  <Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator>
                  <Private-Package>org.wso2.mbp.sample01</Private-Package>
              </instructions>
          </configuration>
      </plugin> 

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

для сборки пакета.Но как мне использовать плагин bundle, чтобы он создавал файл MANIFEST для сборки jar с помощью плагина maven-assembly-plugin, который я использую следующим образом:

    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <appendAssemblyId>true</appendAssemblyId>
      <finalName>myApp</finalName>

      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>         
      <archive>
        <manifest>
          <mainClass>com.TestMain</mainClass>                     
          <packageName>com.</packageName>
        </manifest>
      </archive>    
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>assembly</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
0 голосов
/ 11 июня 2010

Я думаю, это просто плохая практика - включать другие банки в вашу банку. Но если вы хотите сохранить его таким образом, как насчет создания двух jar-файлов из одной сборки: полной с зависимостями и простой для использования в PDE (просто используйте несколько исполнений в плагине сборки)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...