barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

понедельник, 7 сентября 2015 г.

Maven: включение в OSGI-бандл распакованных зависимостей

Задача

Распаковать в собираемый OSGI-бандл некоторые зависимости.

Решение

У maven-bundle-plugin есть инструкция "Embed-Dependency", однако она включает указанные зависимости не распаковывая, т.е. кладет jar-ник внутрь jar-ника. Поэтому приходится использовать комбинацию плагина maven-dependency-plugin и инструкцию "Include-Resource" плагина maven-bundle-plugin:
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.10</version>
        <executions>
          <execution>
            <id>unpack-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <includeArtifactIds>saaj-impl,stax-ex,stax-api,mimepull</includeArtifactIds>
              <excludes>META-INF/**</excludes>
              <outputDirectory>${project.build.directory}/depsToPackIntoBundle</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.5.4</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>**</Bundle-SymbolicName>
            <Bundle-Name>***</Bundle-Name>
            <Export-Package>***</Export-Package>
            <Fragment-Host>***</Fragment-Host>
            <Import-Package>***</Import-Package>
            <Private-Package>***</Private-Package>
            <Include-Resource>${project.build.directory}/depsToPackIntoBundle</Include-Resource>
          </instructions>        
        </configuration>
      </plugin>
В данном примере зависимости saaj-impl,stax-ex,stax-api,mimepul будут запакованы в OSGI-бандл, за исключением их директорий META-INF.

Комментариев нет:

Отправить комментарий