我是Maven
和Java
的新手。我试图在远程计算机上运行hdfs MapReduce作业。我没有权限编写/编辑依赖项文件。我想知道是否有可能JAR
我的Maven项目并将其传递给我的MapReduce作业。这样我就不需要SSH到远程机器并更改maven项目依赖项。我将使用包含远程计算机上未包含的所有必需依赖项的JAR来运行我的MapReduce作业。
答案 0 :(得分:1)
您可以使用maven assembly plugin。
执行此操作将其添加到您的POM并进行相应配置(请参阅下面的示例)。
这将创建一个额外的jar,它包含从命令行运行jar所需的所有依赖项,并将使用main()
方法标记该类(第二个想法,这可能是可选的,因为您可以在运行java -jar
)时指定主类。
这是(我的MainJooqClass的一部分):
package sunshine.web.shaker.main;
// imports
public class MainJooqClass {
public static void main(String[] args) {
// code
}
}
这是我的POM配置插件的部分:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- ... -->
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>sunshine.web.shaker.main.MainJooqClass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies />
</project>