如何在 maven bundle 插件中给出输出目录
How to give an output directory in maven bundle plugin
我开始创建 OSGI 包。所以它工作正常。但是当我将输出目录放在 maven bundle 插件的配置部分时,它不会添加任何已编译的 类。简单地说,类路径是 empty.I 我也在使用 maven 编译器插件。他们互相冲突吗?有没有我以错误的方式配置的东西。这是我的 pox.xml 文件的构建部分。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Export-Package>
demo.wso2.orderprocess.*
</Export-Package>
</instructions>
<outputDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</outputDirectory>
</configuration>
</plugin>
</plugins>
这是我为解决这个问题所做的工作,它奏效了!!!
将您的项目打包类型保持为 "jar" 并向其添加 OSGI 元数据。这可以通过向 maven-bundle-plugin 添加执行目标并从 maven-jar-plugin 引用它来实现。现在,只需将 outputDirectory 路径添加到要放置 jar 的 maven-jar-plugin 中。
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
<outputDirectory>/path/to/output/directory</outputDirectory>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
</plugin>
现在,要构建项目,运行 以下命令。这将生成清单文件并将其打包到 jar 中。
mvn org.apache.felix:maven-bundle-plugin:manifest install
参考:
您应该使用 <buildDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</buildDirectory>
而不是 <outputDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</outputDirectory>
。它对我有用,所以现在我可以提高 OSGI 包的开发速度!
我开始创建 OSGI 包。所以它工作正常。但是当我将输出目录放在 maven bundle 插件的配置部分时,它不会添加任何已编译的 类。简单地说,类路径是 empty.I 我也在使用 maven 编译器插件。他们互相冲突吗?有没有我以错误的方式配置的东西。这是我的 pox.xml 文件的构建部分。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Export-Package>
demo.wso2.orderprocess.*
</Export-Package>
</instructions>
<outputDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</outputDirectory>
</configuration>
</plugin>
</plugins>
这是我为解决这个问题所做的工作,它奏效了!!!
将您的项目打包类型保持为 "jar" 并向其添加 OSGI 元数据。这可以通过向 maven-bundle-plugin 添加执行目标并从 maven-jar-plugin 引用它来实现。现在,只需将 outputDirectory 路径添加到要放置 jar 的 maven-jar-plugin 中。
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
<outputDirectory>/path/to/output/directory</outputDirectory>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
</plugin>
现在,要构建项目,运行 以下命令。这将生成清单文件并将其打包到 jar 中。
mvn org.apache.felix:maven-bundle-plugin:manifest install
参考:
您应该使用 <buildDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</buildDirectory>
而不是 <outputDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</outputDirectory>
。它对我有用,所以现在我可以提高 OSGI 包的开发速度!