技术标签: maven-assembly-plugi maven maven-shade-plugin
以下的内容只是作为自己学习的一个记录,如果有错或者涉及您的内容,请私信告知,不喜勿喷!谢谢!
当你在本地电脑上用eclipse写了一个普通的maven工程,而且将来要放到服务器上,你就需要用到maven的打包,由于是一个普通的java项目,所以只需打包成jar包就可以了(web项目需要打包成war包).我们只需要在pom.xml上加上相应的插件就可以了,最后我选择了maven-shade-plugin这种方式用来打包.在我第一次接触的时候,我用到了二种打jar包的插件,maven-assembly-plugin和maven-shade-plugin.pom.xml内容如下
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxx.xxx</mainClass> 包含main方法的类
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef> 将依赖包一起打包
</descriptorRefs>
</configuration>
<executions>
<execution> 执行器 mvn assembly:assembly
<id>make-assembly</id> 是个名字,可以任意
<phase>package</phase> 绑定到package生命周期阶段上
<goals>
<goal>single</goal> 只运行一次
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>:</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.xxx.xxx</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
上述两种方法中的mainclass标签是你写的项目中,包含main方法的类,至于我为什么最终会选择maven-shade-plugin这种方式,是因为之前在使用maven-assembly-plugin的时候,在本地运行没有任何问题,而当我们放到linux上运行jar包的时候,就会出现错误Unable to locate Spring NamespaceHandler for XML schema namespace[http://www.springframework.org/schema/context]等等之类的错误,错误原因大概是因为由于项目中用到了spring框架,而当我们在项目中使用spring的多个内容的时候,包含了相同名字的文件,通过看网上的解决办法,发现maven-shade-plugin这个插件的打jar包方式可以解决该问题,上述pom.xml上的<transformer>标签中的内容就是解决该问题的!
另外将自己将jar包上传到linux的一些内容记录一下:使用的是SecureCRTPortable工具中的SFTP方式,找到自己本地电脑jar包的存放位置,命令是lcd+存放路径,然后使用 put+该jar包名字 的方式进行上传,linux上运行jar包方法 java -jar -xxx,命令中的xxx是jar包名字,ps -ef | grep java 可以看到正在运行的java进程!
转载自:https://www.toutiao.com/a6717432946736759299/?app=news_article_lite&is_hit_share_recommend=0&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_s...
连接数据源是利用Tableau进行数据分析的第一步,Tableau拥有强大的数据连接能力,支持几乎所有的主流数据源类型。 本节目标:实现多表联接查询和多数据源数据关联,创建、管理和操作数据源。Tableau元数据管理分为三层:数据连接层(Connection)、数据模型层(DataModel)和数据可视化层(VizQL)。Tableau中的数据连接层 数据连接层的数据连接信息包括数据库...
在安装lua-cjson时在网上查找了很多文章,关于具体的安装方法众说纷纭,主要原因是因为lua-cjson在安装时需要进行配置的更改,以下是经过实操得到的具体安装步骤。wget http://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz 下载安装包tar zxvf lua-cjson-2.1.0.tar.gzcd lua-cjson-2.1.0/修改配置文件修改lua版本,默认版本为5.1 (我的当前版本为5.3,可
互斥性信号量的使用互斥型信号量的使用与信号量的使用差不多,但还需要一个较高的空闲优先级,这个级别要比使用这个互斥型信号量的所有任务优先级都高(数字更小)建立互斥型信号量:OS_EVENT *OSMutexCreate(INT8U prio,INT8U *err)返回值赋给信号量参数prio:较高的空闲优先级,用于任务提权参数err:存放出错信息
在同一网络下,如果想要让别人能访问到你的项目,或者想用手机访问自己的web项目,那么使用借助Apache将项目部署到本地服务器。在Windows系统中,我们一般借助wampServer(Apache web服务器)进行部署。具体步骤如下:下载wampServer,地址:[wampServer下载地址](https://sourceforge.net/projects/wampserver/)...
1.连接adbadb connect [ip]:[port] 连接机顶盒(默认端口为5555)2.查看所有连接设备 名称、ip、端口已经状态( device 或 offline )adb devices3.安装apkadb install -r [apk 安装包所在路径(如:d:\a.apk)] 将对应路径的apk 安装包强制(覆盖)安装到机顶盒4.指定设备adb -s [设备名称或...
#define PI (3.14159265358979323846)#define PI_DIV_180 (0.017453292519943296)//π/180#define DegToRad(x)((x)*PI_DIV_180)//角度转换为弧度让我们稍微写几行代码就可以验证其结果:// sin(x)中x角度还是弧度问题.cpp : 定义控制台应用程序的入口点。//#include "st...
Darknet_Yolov4实战(一)_安装Ubuntu+cuda+cudnn安装Ubuntu18.04安装显卡驱动安装cuda安装cudnn安装Ubuntu18.04首先关闭你要安装 Ubuntu18.04.1 的目标主机,然后插入启动盘,接着开机,迅速的按住 Del直到进入 bios 设置界面(不同的电脑进入 bios 的按键不同,一般为 F12 或者 Delete 键),通过方向键选择Boot Menu,然后回车.然后选择 设置U盘启动为第一选项,之后进入安装界面,一步步点击即可。注意分区,一
目录平移游戏对象旋转游戏对象缩放游戏对象在3D世界里,任何一个游戏对象在创建的时候都会附带transform(变换)组件,并且无法删除。任何一个模型的三维坐标都保存在Vector3容器中,该容器记录模型在x轴、y轴、z轴方向的坐标。平移游戏对象transform.Translate()方法,唯一参数为平移的方向示例:using System....
1.Java计算加密代码如下:public class MyClass {public static void main(String[] args){String str = "APP&1122322134534&AbcdeffFDDGHJDS";String finalStr = HmacSha1.genHMAC(str, "123456");System.out.println("finalStr:"+finalStr);// 0PGsANnMw+1yep5TlAXB
JLink 自V4.92版本以后,添加了RTT功能,可以在没有串口的时候当作调试日志输出端口。一、准备工作只需要在你的项目中添加以下三个文件:SEGGER_RTT.cSEGGER_RTT.hSEGGER_RTT_Conf.h需要注意的是在SEGGER_RTT_Conf.h中定义#define SEGGER_RTT_IN_RAM (0)这样不占用额外内存,即可实现日志打印;在源码中调用SEGGER_...
什么是lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性 ...