我有一个包含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>
任何帮助表示赞赏!
答案 0 :(得分:0)
看起来你已经离开了包含的结束括号。
在${project.build.outputDirectory/lib
之后添加一个括号:outputDirectory
,并在下一行的同一位置添加。{/ p>
我认为它应该是${project.build.directory}/lib
而不是${project.build.outputDirectory}/lib
,因为默认情况下project.build.directory
是目标文件夹