我正在尝试打包一个由我的代码+依赖项组成的阴影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>
根标签中,但这也不起作用。他们必须在根文件夹中吗?我可以在着色过程中将它们移动到另一个文件夹吗?
答案 0 :(得分:0)
所有plugin.xml(Eclipse OSGi插件)都必须位于CLASSPATH的根目录中,因此您必须将它们合并。同样,您需要合并META-INF / MANIFEST.MF(OSGi元数据)的内容。
良好的做法?我不会以某种方式争论。做适合您的环境和项目的事情。
如果您找到了一种可靠地合并它们的方法,请告诉我们,以便它可以放入DN文档中,以便那些想要做这种事情的人受益。其他人已经尝试过,在stackoverflow IIRC上发布一些帖子