我需要将另一个罐子的全部内容包含在我的罐子里。这是因为我需要将不符合OSGi的库包装到OSGi容器中。
受影响的图书馆是Saxon-he,我找到了一个包装它的项目:https://github.com/lucee/osgi-bundle-saxon-he.git。这是使用的maven依赖插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack</id>
<phase>validate</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>9.7.0-10</version>
<type>jar</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
</artifactItem>
</artifactItems>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
问题是,这个解决方案并不包装所有内容。缺少原始jar根目录中的XML,当库试图读取它们时抛出异常......
我试图改变任务的阶段,但没有成功......解决方案与java类完美配合(之后,调用maven-bundle-plugin,并且正确生成所有OSGi导入)但它在涉及资源方面失败了......
知道怎么做吗?所有东西都被解压缩到目标/类中,但这些东西没有打包到目标jar中......
答案 0 :(得分:0)
对于您的预期行为,您可以使用maven-assembly-plugin
插件。
事实上,正如文档中所报告的那样,它将创建一个JAR,其中包含项目的二进制输出以及解压缩的依赖项。
使用jar-with-dependencies作为assembly-plugin的descriptorRef 配置以创建包含二进制文件的JAR 项目的输出,以及解压缩的依赖项。这个 内置描述符使用分类器生成程序集 使用JAR归档格式的jar-with-dependencies。
有关其他详情,请查看maven-assembly-plugin docs
这样说,你可以像下面那样配置它:
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.2</version>
<executions>
<execution>
<id>assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
</archive>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>