当前位置: 首页 > 知识库问答 >
问题:

如何使用'bnd-maven-plugin'在我的OSGi bundle jar中添加所有第三方jar(可解析)?

陆建木
2023-03-14

我正在使用'bnd-maven-plugin'https://github.com/bndtools/bnd/tree/master/maven/bnd-maven-plugin开发OSGi应用程序

<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>XYZ.Models</groupId>
    <artifactId>XYZ.Models</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>

    </dependencies>

    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>biz.aQute.bnd</groupId>
                <artifactId>bnd-maven-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>bnd-process</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <archive>

                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
<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>XYZ.Models</groupId>
    <artifactId>XYZ.Models</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
            <scope>provided</scope>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>create-osgi-bundles-from-dependencies</id>
            <build>
                <directory>${basedir}/bundles</directory>
                <plugins>

                    <plugin>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>maven-bundle-plugin</artifactId>
                        <version>2.0.1</version>
                        <extensions>true</extensions>
                        <executions>
                            <execution>
                                <id>wrap-my-dependency</id>
                                <goals>
                                    <goal>wrap</goal>
                                </goals>
                                <configuration>
                                    <wrapImportPackage>;</wrapImportPackage>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

共有1个答案

孟永望
2023-03-14

如上所述,正确地提到了bnd-maven-plugin。您也可以从bndtools和-wcm.io引用,但是如果有帮助的话,只添加几行。

 <configuration>
     <bnd><![CDATA[
         Include-Resource: <EXAMPLE-GROUP-ID>*.jar;<ANOTHER>.*;
     ]]></bnd>
</configuration>

您可以根据需要使用通配符。我刚刚补充了一个例子。

 类似资料:
  • 问题内容: 我有一些使用Java的第三方数据库客户端库。我想通过访问它们 例如:通过Java网关使客户端类(不是jdbc驱动程序!)可用于python客户端: 目前尚不清楚将第三方库添加到jvm类路径的位置。我试图添加到compute-classpath.sh,但这似乎并没有奏效:我明白了 另外,与Hive进行比较时:Hive jar文件不会通过compute- classpath.sh加载,这使

  • 我正在使用Liquibase(通过其Maven插件)来处理数据库迁移。 然而,并非所有Liquibase功能都可以通过Maven获得。特别是Generate Changelog,只能通过命令行(使用可下载的liquibase.jar)使用如下命令: 如何通过Maven可移植地执行此命令?也就是说,我不想将liquibase.jar文件添加到我的项目结构中。 相反,我想将其列为一个依赖项(我可以手动

  • 我的专长领域不是Java。我在其他平台上用其他语言开发。 现在,我正在为一个项目开发一系列Java servlet。servlet将在运行FileNetp8的CentOS服务器上运行。 我认为JAR不需要打包在部署WAR中,因为应用程序将被部署到运行Filenet的Websphere服务器上,所以它们应该在服务器上可用。我是否应该将它们作为外部JAR引用添加以编译项目?

  • 问题内容: 我有一个适用于Android的Adobe AIR应用程序。用于此AIR 3.0和Flash Builder 4.6。我需要制作MyANEFile.ane- 必须包含2个外部.jar文件:Flurry.jar + Tapjoy.jar。但是当我制作.ane文件时- 它不起作用。如何将这2个jar文件添加到我的主应用程序jar文件中,以正确制作.ane文件?谢谢。 它向我显示了dalvik

  • 我从其他团队收到了一个jar文件,需要在AEM中使用。我不能在AEM中直接使用jar,所以我在链接的帮助下将jar转换为捆绑包。”https://helpx.adobe.com/experience-manager/kb/ConvertAJarIntoOsgiBundle.html“,现在我的bundle已经准备好,并通过felix控制台上传到AEM中。bundle处于活动状态。现在我需要使用bu

  • 我想加载一些在maven存储库或其他类似存储库中不存在的jar文件。 为此,我在bitbucket上创建了一个名为“maven-repo”的存储库,并将其克隆到我的本地机器上。 但它给了我一个错误,未能加载一个jar。 如何在Project中包含jar文件和导入类???