Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 2 Maven的新功能:使用shade插件和第三方JAR_Maven 2_Maven_Jar - Fatal编程技术网

Maven 2 Maven的新功能:使用shade插件和第三方JAR

Maven 2 Maven的新功能:使用shade插件和第三方JAR,maven-2,maven,jar,Maven 2,Maven,Jar,这应该很简单,但我无法理解。我需要使用第三方jar创建一个uberjar。我已经按照以下说明进行了操作:并将它们添加到本地存储库中。但是现在呢?每一个Maven教程/示例都有点可疑(双关语),我只是不知道如何正确编辑.pom文件以使其正常工作 此外,我对阴影“插件”的总体概念感到困惑。我的意思是,我遵循了Maven的基本教程,一切都很顺利。但是当我查看shade插件页面时,除了源代码之外,我找不到它可以下载。我是说,它不是一个插件吗?我不应该下载二进制文件并以某种方式将其安装到Maven中吗 对

这应该很简单,但我无法理解。我需要使用第三方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>