maven项目打包成可执行的jar
编写功能类:
package com.hpay.FileToZkUtil; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.concurrent.CountDownLatch; import org.apache.log4j.Logger;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; public class FileToZkUtil
{
private static final Logger logger = Logger.getLogger(FileToZkUtil.class); private static CountDownLatch connectedSemaphore = new CountDownLatch( 1 ); /**
*
* @param zkUrl zookeeper地址
* @param zkNode zookeeper节点
* @param filePath 文件路径
*/
@SuppressWarnings("unused")
public static void setFileToZkNode(String zkUrl, String zkNode, String filePath) { Watcher watch = new Watcher() {
public void process(WatchedEvent event) {
// System.out.println(event.getPath());
logger.info(">>>>> " + event.getPath() +">>>>>" + event.getType());
if (KeeperState.SyncConnected == event.getState()) {
connectedSemaphore.countDown();
}
}
};
ZooKeeper zk;
try {
//读取目标文件
byte[] data = readFile(filePath);
if (data != null) {
zk = new ZooKeeper(zkUrl, 3000, watch);
connectedSemaphore.await();
logger.info("zk连接创建成功:" + zkUrl);
//测试是否存在目标节点
Stat stat = zk.exists(zkNode, true);
logger.info("目标节点状态:" + stat);
//设置目标节点数据
zk.setData(zkNode, data, -1);
} else {
logger.info("获取" + filePath + "数据失败!");
} } catch (IOException e) {
e.printStackTrace();
logger.error("绑定zk节点出错:" + e.getMessage());
} catch (KeeperException e) {
e.printStackTrace();
logger.error("绑定zk节点出错:" + e.getMessage());
} catch (InterruptedException e) {
e.printStackTrace();
logger.error("绑定zk节点出错:" + e.getMessage());
}
} //读取文件
private static byte[] readFile(String filePath) {
File file = new File(filePath);
byte b[] = null;
if (file.isFile() && file.exists()) {
FileInputStream fis;
try {
fis = new FileInputStream(file);
int count = fis.available();
int readCount = 0;
b = new byte[count];
while (readCount < count) {
readCount += fis.read(b, readCount, count - readCount);
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
logger.error("读取文件出错:" + e.getMessage());
} catch (IOException e) {
e.printStackTrace();
logger.error("读取文件出错:" + e.getMessage());
}
}
return b;
}
}
编写main方法类:
public class MianClass {
public static void main(String[] args) {
// FileToZkUtil.setFileToZkNode("10.48.172.101:2161", "/test", "E:/test/zookeeper/t.txt");
FileToZkUtil.setFileToZkNode(args[0], args[1], args[2]);
}
}
在pom文件中配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.hpay.FileToZkUtil.MianClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
打包方式:
1.进入到项目所在目录,例如:
cd D:\workspace\riskCompensate\FileToZkUtil
2.运行命令
mvn assembly:assembly
3.在项目的target目录中可以看到如下文件
说明打包完成.
运行方式:
1.在cmd命令窗口进入target目录
cd cd D:\workspace\riskCompensate\FileToZkUtil\target
2.输入
java -jar FileToZkUtil-0.0.1-SNAPSHOT-jar-with-dependencies.jar 10.48.172.101:2161 /test E:/test/zookeeper/t.txt
即可执行该jar,其中 10.48.172.101:2161 /test E:/test/zookeeper/t.txt 为main方法的三个参数
需要注意的事项:
1.如果项目中依赖了其他maven项目,需要先将依赖的项目编译.
选中依赖的项目执行 maven install
2.需要将依赖的jar,如该项目中的zookeeper的pom文件中scope属性修改为compile
maven项目打包成可执行的jar的更多相关文章
- 如何将maven项目打包成可执行的jar
如何将maven项目打包成可执行的jar 分类: maven2010-12-17 10:18 10411人阅读 评论(2) 收藏 举报 jarmavenassemblyjava 方法一:将项目及所依赖 ...
- Maven项目打包成可执行Jar文件
在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...
- 将Maven项目打包成可执行jar文件(引用第三方jar)
方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build> ...
- 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...
- 在IDEA中如何将Spring boot项目打包成可执行的jar包并发布到linux服务
这两年微服务很流行,这里简单介绍一下如何将自己使用idea写的微服务打包成一个可执行的jar包,并发布到linux服务器的步骤.因为spring boot有内置的tomcat所以一般使用内置的tomc ...
- 将Maven项目打包成可执行 jar文件(引用第三方jar)
使用maven assembly插件完成打包 修改pom: <build> <pluginManagement> <plugins> <!--设置jdk版本, ...
- hadoop-maven项目打包成可执行的jar
环境: cdh5.1.0 jdk1.7 <build> <plugins> <!--指定JDK为1.7 --> <plugin> <groupId ...
- 通过idea 打包 spring maven项目打包为可执行jar包
用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...
- 怎么将maven项目打包成war包
问题:我在eclipse上能运行,然后我想将这个maven项目打包成war然后放到另外一台机子上(其实是手动放在tomcat的webapp目录中),提供外部访问.现在问题是,一直maven项目打包一直 ...
随机推荐
- jenkins, ant, pmd持续集成
http://pmd.sourceforge.net/pmd-5.0.3/ant-task.html 在jenkins , ant , pmd进行集成的时候,build.xml模板如下,在网上找了一些 ...
- Java并发编程:Lock
原文出处: 海子 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问.本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包 ...
- 线程私有数据和pthread_once
#include <stdio.h> #include <pthread.h> pthread_key_t key; pthread_once_t ponce = PTHREA ...
- DataGridView列的宽度、行的高度自动调整
注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...
- SVN Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。
错误 1 Files 的值“ < < < < < < < .mine”无效.路径中具有非法字符. 今天使用SVN进行更新的时候,出现了如上问题,想起卓 ...
- 【JavaScript】js数组操作,由push到那么多
shift() 定义:删除并返回数组的第一个元素: pop() 定义:删除数组最后一个元素,并返回: push() 定义:在数组后边添加一个或者多个元素,并返回新数组的长度: array.push(& ...
- css样式加载顺序及覆盖顺序深入理解
注:内容转载 很多的新手朋友们对css样式加载顺序和覆盖顺序的理解有所偏差,下面用示例为大家详细的介绍下,感兴趣的朋友不要错过 { height: 100%; width: 200; position ...
- JQuery中Ajax的操作
JQuery Ajax异步操作的方式: $.ajax,$.post, $.get, $.getJSON. 一, $.ajax,这个是JQuery对ajax封装的最基础步,通过使用这个函数可以完成异 ...
- I finally made sense of front end build tools. You can, too.
来源于:https://medium.freecodecamp.com/making-sense-of-front-end-build-tools-3a1b3a87043b#.nvnd2vsd8 ...
- 解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”
WPS for Linux提示“系统缺失字体symbol.wingdings.wingdings 2.wingdings 3.webding” 出现提示的原因是因为WPS for Linux没有自带以 ...