2

我正在尝试打包一个由我的代码 + 依赖项组成的阴影 jar。我可以很好地打包所有东西,但是因为我使用的是 DataNucleus(datanucleus-core、datanucleus-api-jdo、datanucleus-rdbms),所以它们的 plugin.xml 在它们的根目录中。我尝试使用带有阴影的 XmlAppendingTransformer,但由于这些 xml 的根元素只是<plugin>将所有<extension>元素合并到一个巨大<plugin>标签中的转换器,并且在运行时 DataNucleus 类加载器无法找到正确的插件。所以我的问题是:

1) 将所有依赖项打包到 1 个 jar 中是一个好习惯吗?或者我应该将依赖项复制到一个文件夹中并在运行时将该文件夹包含在类路径中?

2)如果我想用我的jar打包DataNucleus,如何处理多个plugin.xml?我尝试将它们放在<plugins>根标签中,但这也不起作用。他们必须在根文件夹中吗?我可以在阴影过程中将它们移动到不同的文件夹吗?

4

1 回答 1

0

所有 plugin.xml(Eclipse OSGi 插件)都必须位于 CLASSPATH 的根目录中,因此您必须合并它们。同样,您需要合并 META-INF/MANIFEST.MF(OSGi 元数据)的内容。

好的做法?我不会争论任何一种方式。做适合您的环境和项目的事情。

如果您找到一种可靠地合并它们的方法,请告诉我们,以便可以将其放入 DN 文档中,以造福那些想要做这种事情的人。其他人之前尝试过,stackoverflow IIRC上的一些帖子

于 2013-01-15T08:40:03.430 回答