maven项目打包以及在liunx上运行
2016-11-21 17:56
281 查看
maven项目写完之后,需要打包中含有第三方的jar包的
1、在pom.xml 中添加
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.polaris.mongodb.Query</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
其中<mainClass>com.syswin.mongodb.Query</mainClass> 里面的com.syswin.mongodb.Query是你自己的main 方法的主类。
2、cmd打开命令窗口,切换到项目的根目录下运行 mvn assembly:assembly
F:\workspace\mongodb-to-hdfs>mvn assembly:assembly
当出现如下信息时,表示成功。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.550s
[INFO] Finished at: Mon Nov 21 17:27:24 CST 2016
[INFO] Final Memory: 90M/1078M
[INFO] ------------------------------------------------------------------------
编译完之后在 mongodb-to-hdfs\target 下面会生成一个mongodb-to-hdfs-0.0.1-SNAPSHOT-jar-with-dependencies.jar 文件
3、上传mongodb-to-hdfs-0.0.1-SNAPSHOT-jar-with-dependencies.jar到linux,运行
java -jar /home/Java/mongodb-to-hdfs-0.0.1-SNAPSHOT-jar-with-dependencies.jar $a2 $a3 $a4
后面的是需要的参数。(需要的话就加上,不需要的话就去掉)
4、如果你的项目中涉及到hdfs,运行时报如下错:
java.io.IOException: No FileSystem for scheme: hdfs
这是因为:编译后META-INF中的services目录下,有如下的内容:
![](http://img.blog.csdn.net/20161121175231432?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在编译时,hadoop-common.jar中的services内容打进了最终的jar包中,而hadoop-hdfs.jar包中,services的内容被覆盖了。
在项目中我们使用了hdfs://ip:port的schema,而在生成的最终jar包中,无法找到这个schema的实现。
所以就抛出了:java.io.IOException: No FileSystem for scheme: hdfs
解决方案是,在设置hadoop的配置的时候,显示设置这个类:"org.apache.hadoop.hdfs.DistributedFileSystem:
Configuration conf = new Configuration();
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
1、在pom.xml 中添加
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.polaris.mongodb.Query</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
其中<mainClass>com.syswin.mongodb.Query</mainClass> 里面的com.syswin.mongodb.Query是你自己的main 方法的主类。
2、cmd打开命令窗口,切换到项目的根目录下运行 mvn assembly:assembly
F:\workspace\mongodb-to-hdfs>mvn assembly:assembly
当出现如下信息时,表示成功。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.550s
[INFO] Finished at: Mon Nov 21 17:27:24 CST 2016
[INFO] Final Memory: 90M/1078M
[INFO] ------------------------------------------------------------------------
编译完之后在 mongodb-to-hdfs\target 下面会生成一个mongodb-to-hdfs-0.0.1-SNAPSHOT-jar-with-dependencies.jar 文件
3、上传mongodb-to-hdfs-0.0.1-SNAPSHOT-jar-with-dependencies.jar到linux,运行
java -jar /home/Java/mongodb-to-hdfs-0.0.1-SNAPSHOT-jar-with-dependencies.jar $a2 $a3 $a4
后面的是需要的参数。(需要的话就加上,不需要的话就去掉)
4、如果你的项目中涉及到hdfs,运行时报如下错:
java.io.IOException: No FileSystem for scheme: hdfs
这是因为:编译后META-INF中的services目录下,有如下的内容:
在编译时,hadoop-common.jar中的services内容打进了最终的jar包中,而hadoop-hdfs.jar包中,services的内容被覆盖了。
在项目中我们使用了hdfs://ip:port的schema,而在生成的最终jar包中,无法找到这个schema的实现。
所以就抛出了:java.io.IOException: No FileSystem for scheme: hdfs
解决方案是,在设置hadoop的配置的时候,显示设置这个类:"org.apache.hadoop.hdfs.DistributedFileSystem:
Configuration conf = new Configuration();
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
相关文章推荐
- eclipse中maven项目有一个红叉,但项目编译打包运行都没有问题
- Maven学习记录3——创建、编译、打包、运行项目
- maven中打包项目源代码,以及中文注释乱码问题解决
- maven系列--运行mvn wildfly:deploy部署项目时报dom4j错误以及wildfly清除项目缓存的方法
- idea将maven项目打包成war包的方式,以及使用war包
- maven项目修改jsp代码不用打包就能运行
- MAVEN安装、并在Myeclipse下,装配本地仓库以及建web项目并在tomcat下运行完整过程笔记
- Idea 打包maven项目 以及spring boot 的自动配置
- Maven 下打包项目并运行
- maven打包子项目war包项目时,不打包依赖项目jar包项目的原因,以及maven中不能单独打包子项目
- maven把项目打包成可运行的jar包
- java的maven工程部署到linux(包括tomcat部署,jdk安装,maven工程打包及项目运行)
- maven项目打包运行
- maven项目使用maven-assembly-plugin打包成可运行的jar
- Maven入门(二)项目的打包和运行
- IntelliJ IDEA 编译maven项目以及运行测试前编译项目
- [常用maven配置]scala配置以及打包可运行JAR
- Maven配置和打包以及使用Eclipse构建Maven项目
- Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
- Maven Spring 项目打包成可运行的jar包 (用maven-shade-plugin)