【发布时间】:2011-11-07 16:21:26
【问题描述】:
我使用 maven-bundle-plugin 从非 osgi 依赖创建 osgi 插件,我想将此依赖的源代码包含到 projet 构建中。
这是一个示例,我从 jfreechart 创建了一个 OSGI 包,当我发布它时,我想包含 jfreechart 源代码。
<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>org.jfree.chart</groupId>
<artifactId>com.netappsid.org.jfree.chart</artifactId>
<version>1.0.13</version>
<name>JFreeChart OSGI</name>
<packaging>bundle</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>org.jfree.chart.*;org.jfree.data.*</Export-Package>
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
<Embed-Dependency>jfreechart;inline=true</Embed-Dependency>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.13</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>com.springsource.org.jfree</artifactId>
<version>1.0.12</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>com.springsource.javax.servlet</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
</project>
【问题讨论】:
-
您使用的是 IDE 吗?当我针对这个 POM 运行 Maven 时,我得到了预期的 JAR 文件,其中包含“META-INF\...”和“org\jfree\...”。由于您也使用了“嵌入依赖”,我猜您还希望包含 jfreechart JAR,在这种情况下删除“;inline=true”语句,这将起作用。
-
这个 pom 工作,但我想在发布时将带有 maven-source-plugin 的 jfreechart 源添加到 com.netappsid.org.jfree.chart-1.0.13-sources.jar 中
-
对不起,我没有意识到您想要实际的源文件。我没有在任何 Maven 存储库上看到 jfreechart 源文件,但您可以直接从他们的网站下载它们并使用:
<scope>system</scope>和<systemPath>${project.basedir}/lib/jfree-sources.jar</systemPath>以及 maven-source-plugin 的依赖项。我以前没有使用过它,所以不会有任何帮助。很抱歉造成误解。