本文中谈及的用maven将dubbo工程打成jar包来运行的方法是:使用maven打包插件maven-jar-plugin在pom.xml文件最后新增一些代码。感兴趣的朋友可以看看,希望能帮到你
maven打包方式
使用maven打包插件maven-jar-plugin
在pom.xml
文件最后新增以下代码。
maven-dependency-plugin
是指将依赖的jar包复制到指定目录
maven-resources-plugin
将依赖的resources复制到指定目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | < build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-jar-plugin</ artifactId >
< version >2.6</ version >
< configuration >
< archive >
< manifest >
< addClasspath >true</ addClasspath >
< classpathPrefix >lib/</ classpathPrefix >
< mainClass >com.alibaba.dubbo.container.Main</ mainClass >
</ manifest >
</ archive >
< outputDirectory >${project.build.directory}/maven-archiver</ outputDirectory >
< excludes >
< exclude >*.*</ exclude >
< exclude >config/*</ exclude >
< exclude >config/tencent/*</ exclude >
< exclude >META-INF/spring/*</ exclude >
</ excludes >
</ configuration >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-dependency-plugin</ artifactId >
< version >2.8</ version >
< executions >
< execution >
< id >copy-dependencies</ id >
< phase >package</ phase >
< goals >
< goal >copy-dependencies</ goal >
</ goals >
< configuration >
< outputDirectory >
${project.build.directory}/maven-archiver/lib
</ outputDirectory >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< artifactId >maven-resources-plugin</ artifactId >
< executions >
< execution >
< id >copy-resources</ id >
< phase >package</ phase >
< goals >
< goal >copy-resources</ goal >
</ goals >
< configuration >
< outputDirectory >${project.build.directory}/maven-archiver/resources</ outputDirectory >
< resources >
< resource >
< directory >${basedir}/src/main/resources</ directory >
< filtering >true</ filtering >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
|
Salin selepas log masuk
打包之后的目录结构
包含了class文件,以及需要的配置文件信息(不包含excludes的配置文件)
在MANIFEST.MF
中包含了运行需要的信息
1 2 3 | Class-Path: lib/commons-beanutils-1.8.3.jar lib/commons-betwixt-0.8.jar
...
Main-Class: com.alibaba.dubbo.container.Main
|
Salin selepas log masuk
java -jar
启动命令
java -jar 执行命令时,会用到目录META-INFMANIFEST.MF中Main-Class的参数,这个是在打包的时候指定函数的入口。
1 | java -jar x-0.0.1-SNAPSHOT.jar
|
Salin selepas log masuk
java -cp
启动命令
1 | java -cp .:x-0.0.1-SNAPSHOT.jar packname.mainclassname
|
Salin selepas log masuk
因为我工程中需要引用外部的resources文件所以我通常用这种方式启动
配置文件地址是绝对路径
1 | java -cp /Users/username/resources:dubbo-service-1.0.jar com.alibaba.dubbo.container.Main
|
Salin selepas log masuk
-cp
和-classpath
是相同的效果
java -cp 是指定运行所依赖其他类的路径,通常是类库、jar 包之类,多个依赖在Window
上用分号";"隔开,linux
上用":"隔开。
表达式支持通配符
1 | java -cp .:/Users/username/*.jar packname.mainclassname
|
Salin selepas log masuk
如果需要将依赖的jar包都达到一个jar包中运行,可以使用maven-shade-plugin
这个插件。
这个插件的功能主要是:将依赖的jar包打包到当前jar包,并且在打包的时候把类重命名,可以解决jar包的多版本冲突,具体可以查询官方插件文档。
相关教程:Java视频教程
Atas ialah kandungan terperinci 怎么用maven将dubbo工程打成jar包来运行. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!