Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven包JDO依赖项与shade jar_Maven_Datanucleus_Maven Shade Plugin - Fatal编程技术网

maven包JDO依赖项与shade jar

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

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

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

2) 如果我想用jar打包DataNucleus,如何处理多个plugin.xml?我试着把它们放在
根标记中,但也没用。它们必须在根文件夹中吗?我可以在着色过程中将它们移动到另一个文件夹吗?

所有plugin.xml(Eclipse OSGi plugin)必须位于类路径的根目录中,因此必须合并它们。类似地,您需要合并META-INF/MANIFEST.MF(OSGi元数据)的内容

良好做法?我不会以这种或那种方式争论。做适合您的环境和项目的事情


如果您找到了一种可靠地合并它们的方法,请让我们知道,这样它就可以进入DN文档中,以方便那些想要这样做的人。其他人以前也尝试过,stackoverflow IIRC上的一些帖子。。。我只是将org.datanucleus:*JAR从着色中排除。其余部分用阴影表示。对于一个启动命令来说,在类路径中多放几个jar并不是什么大问题,但是当类路径中有50个jar时,它看起来很糟糕。这是唯一的原因。有些人宁愿把所有的罐子放在一个罐子里。我自己喜欢,但我相信这是口味的问题