如何使用maven将依赖项添加到jar的lib目录中?

时间:2015-08-31 17:44:53

标签: maven maven-jar-plugin

我有一个包含hadoop的map / reduce代码的jar。它需要一个依赖项,我需要将它放入jar的lib目录中,这样jar就是自包含的,可以在hadoop中工作。

这就是我在我的pom中所做的:

1)添加maven-dependency-plugin将我需要的lib复制到target / lib文件夹

2)配置jar插件以获取target / lib文件夹中的lib,并将其添加到生成的jar中。

我无法让它发挥作用。生成的jar不包含额外的库。

我也尝试将目标/ lib目录添加到pom中的/ tag,但这也没有用。

这是我的pom,注释....

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <executions>
          <execution>
              <id>copy apache-httpcomponents</id>
              <phase>process-resources</phase>
              <goals>
                  <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                  <includeTypes>jar</includeTypes>
                  <includeGroupIds>org.apache.httpcomponents</includeGroupIds>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
                  <stripVersion>false</stripVersion>
              </configuration>
          </execution>
      </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
              <id>add lib directory to jar</id>
              <phase>package</phase>
              <goals>
                  <goal>jar</goal>
              </goals>
              <configuration>
                <classifier>jar</classifier>
                <includes>
                  <include>${project.build.outputDirectory/lib/**</include>
                  <include>${project.build.outputDirectory/target/**</include>
                </includes>
              </configuration>
          </execution>
      </executions>
    </plugin>

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

看起来你已经离开了包含的结束括号。

${project.build.outputDirectory/lib之后添加一个括号:outputDirectory,并在下一行的同一位置添加。{/ p>

我认为它应该是${project.build.directory}/lib而不是${project.build.outputDirectory}/lib,因为默认情况下project.build.directory是目标文件夹