这应该很简单,但我无法绕过它。我需要使用第三方罐子创建一个uberjar。我已经按照这些说明操作:Including a non-Mavenized dependency so it works with maven-shade-plugin并将它们添加到本地存储库中。但现在呢?每个Maven教程/示例都有点阴暗(双关语),我只是不知道如何正确编辑.pom文件以使其工作。
此外,我对整个阴影“插件”感到困惑。我的意思是,我遵循了基本的Maven教程,它一切都很好,花花公子。但是当我查看树荫插件页面时,除了源代码之外我找不到它下载。我的意思是,这不是一个插件吗?我不应该下载二进制文件并以某种方式将其安装到Maven中吗?
对于极端的noobish问题感到抱歉,但不用说,我知道对Maven的蹲坐。
答案 0 :(得分:5)
要创建阴影(超级)jar,只需在pom.xml
中声明阴影插件。
关于阴影插件的安装,只需在plugins
的{{1}}部分声明它即可。 Maven插件不是手动安装的,而是由Maven自动下载(如果尚未下载;就像依赖项一样),存储在本地存储库中,并在项目需要时使用。
至于使用它,就像其他插件一样,通过在配置需求中添加pom.xml
元素,在pom.xml
中声明它。这个插件什么都不做(有些做,有些不做) - 你必须指定要执行的“目标”(想想“类的方法”),以及“阶段”(想想构建过程的“步骤”) )。除非您有奇怪的需求,否则请在“包”阶段指定“阴影”目标(见下文)。
有关更多配置的可能性,请参阅shade usage页面及其示例(尤其是selecting contents for uber jar)。这是一个简单的示例,当您运行<plugin>
时,将mvn package
目录中的原始jar替换为超级jar。它只包含运行时依赖项,而不是测试时使用的依赖项(注意junit依赖项的target/
元素,它不包含在uber jar中。)
<scope>
答案 1 :(得分:0)
如果您已经下载了二进制文件并将它们安装到本地Maven存储库中,剩下的就是将它们声明为POM中的依赖项。如果在POM中声明了shade插件,那么简单的“mvn install”应该在目标目录中生成一个独立的JAR。