Maven 2 Maven的新功能:使用shade插件和第三方JAR
这应该很简单,但我无法理解。我需要使用第三方jar创建一个uberjar。我已经按照以下说明进行了操作:并将它们添加到本地存储库中。但是现在呢?每一个Maven教程/示例都有点可疑(双关语),我只是不知道如何正确编辑.pom文件以使其正常工作 此外,我对阴影“插件”的总体概念感到困惑。我的意思是,我遵循了Maven的基本教程,一切都很顺利。但是当我查看shade插件页面时,除了源代码之外,我找不到它可以下载。我是说,它不是一个插件吗?我不应该下载二进制文件并以某种方式将其安装到Maven中吗Maven 2 Maven的新功能:使用shade插件和第三方JAR,maven-2,maven,jar,Maven 2,Maven,Jar,这应该很简单,但我无法理解。我需要使用第三方jar创建一个uberjar。我已经按照以下说明进行了操作:并将它们添加到本地存储库中。但是现在呢?每一个Maven教程/示例都有点可疑(双关语),我只是不知道如何正确编辑.pom文件以使其正常工作 此外,我对阴影“插件”的总体概念感到困惑。我的意思是,我遵循了Maven的基本教程,一切都很顺利。但是当我查看shade插件页面时,除了源代码之外,我找不到它可以下载。我是说,它不是一个插件吗?我不应该下载二进制文件并以某种方式将其安装到Maven中吗 对
对于这个极端的noobish问题很抱歉,但是,不用说,我对Maven很了解。如果您已经下载了二进制文件并将它们安装到本地Maven存储库中,那么剩下的就是在POM中将它们声明为依赖项。如果在POM中也声明了shade插件,那么简单的“mvn安装”应该会在目标目录中生成一个独立的JAR。要创建shade(uber)JAR,只需在
POM.xml
中声明shade插件即可
关于shade插件的安装,只需在pom.xml
的plugins
部分声明即可。Maven插件不是手动安装的,而是由Maven自动下载(如果尚未下载;就像依赖项一样),存储在本地存储库中,并在项目需要时使用
至于使用它,就像其他插件一样,在pom.xml
中声明它,方法是根据您的配置需要添加
元素。这个插件不会自动执行任何操作(有些做,有些不做)-您必须指定要执行的“目标”(想想“类的方法”),以及在哪个“阶段”(想想构建过程的“步骤”)。除非您有奇怪的需求,否则请在“打包”阶段指定“着色”目标(见下文)
有关更多配置可能性,请参阅本页及其示例(尤其是)。下面是一个简单的示例,当您运行mvn包
时,将target/
目录中的原始jar替换为uber jar。它只包括运行时依赖项,而不包括测试时使用的依赖项(注意junit依赖项的
元素,它不包括在uber jar中)
com.sample
测试
1
org.apache.maven.plugins
maven阴影插件
1.5
包裹
阴凉处
com.sample
试芯
1
朱尼特
朱尼特
3.8.1
测试
<project>
<groupId>com.sample</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sample</groupId>
<artifactId>test-core</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>