Maven打包含有Main方法jar并运行
2024-08-25 01:18:24
最近使用Kettle做定时数据抽取,因为Job更新或需求变更,修改Bug等种种原因,需要对重跑Job一般是针对每天的数据重跑一次。刚开始的做法是直接在自己的开发机器上重跑,这样速度比较慢,因为这时候你的开发机相当于数据的中专站,这样外网数据来回传输速度很慢重新集计一个月的数据可能要花半小时以上。因此就萌生了把集计程序打成jar直接放到服务器上去执行,这样内网传输速度就快了很多。
之前使用IDEA自带的打包试了好几次都不成功,后面搜了一下Maven发现更简单。对应的POM文件如下:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>RunJob</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
其中<mainClass>RunJob</mainClass>填写含有Main的class名,然后执行以下命令:
mvn assembly:assembly
//跳过测试
mvn -Dmaven.test.skip=true assembly:assembly
打包成功后会把所有依赖Jar的class打在一个jar包中。
使用以下命令运行jar,参数依次跟在后面,如果有的话:
java -jar BuildKettleJob-1.0.jar
最新文章
- 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
- vue-lazy-render: 延迟渲染大组件,增强页面切换流畅度
- awk 双引号vs单引号
- geoip2 domain
- mysql 各种运算对于null值的处理
- 安卓 DevOps:从一次推送命令到生产
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
- linux系统中whereis的用法详解
- KMP字符串模式匹配详解(转)
- C语言实现界面(不通过MFC\避免遗忘)
- 1018 Big Number
- Xcode 下cocos-2dx 环境搭建
- Java compiler 并行编译思考
- MHA-Atlas-MySQL高可用集群
- ExtJS4.2下将表单元素放在菜单时不能进行拷贝的问题解决办法
- word表分页表头
- Linux之 Ngnix
- Eclipse布局问题小记
- cf1000C Covered Points Count (差分+map)
- 升级tomcat需要更改哪些配置?