Rumah > Java > javaTutorial > 怎么用maven将dubbo工程打成jar包来运行

怎么用maven将dubbo工程打成jar包来运行

little bottle
Lepaskan: 2019-04-30 10:41:45
ke hadapan
2776 orang telah melayarinya

本文中谈及的用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

                        <!--   是否依赖外部jar包 -->

                            <addClasspath>true</addClasspath

                            <!-- 依赖外部jar包路径 -->

                            <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

 

<!--             拷贝依赖的jar包到lib目录 -->

            <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>

<!--    拷贝依赖的资源文件包到resources目录 -->

            <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
  • 运行jar包方式

打包之后的目录结构
包含了class文件,以及需要的配置文件信息(不包含excludes的配置文件)

a.png

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包都达到一个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!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan