首頁  >  文章  >  Java  >  怎麼用maven將dubbo工程打成jar包來運行

怎麼用maven將dubbo工程打成jar包來運行

little bottle
little bottle轉載
2019-04-30 10:41:452717瀏覽

本文中談到的用maven將dubbo工程打成jar包來運行的方法是:使用maven打包插件maven-jar-plugin在pom.xml檔案最後新增一些程式碼。有興趣的朋友可以看看,希望能幫到你

maven打包方式

使用maven打包插件maven-jar-plugin
pom.xml檔案最後新增以下程式碼。
maven-dependency-plugin是指將依賴的jar套件複製到指定目錄
maven-resources-plugin將依賴的resources複製到指定目錄

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

打包之後的目錄結構
包含了class文件,以及需要的設定檔資訊(不包含excludes的設定檔)

怎麼用maven將dubbo工程打成jar包來運行

MANIFEST.MF中包含了運行所需的資訊

Class-Path: lib/commons-beanutils-1.8.3.jar lib/commons-betwixt-0.8.jar
...
Main-Class: com.alibaba.dubbo.container.Main

java -jar
啟動指令
java -jar 執行指令時,會用到目錄META-INFMANIFEST.MF中Main-Class的參數,這個是在打包的時候指定函數的入口。

java -jar x-0.0.1-SNAPSHOT.jar

java -cp
啟動指令

java -cp .:x-0.0.1-SNAPSHOT.jar packname.mainclassname

因為我工程中需要引用外部的resources檔案所以我通常用這種方式啟動
設定檔位址是絕對路徑

java -cp /Users/username/resources:dubbo-service-1.0.jar com.alibaba.dubbo.container.Main

-cp-classpath是相同的效果
java -cp 是指定執行所依賴其他類別的路徑,通常是類別庫、jar 套件之類,多個依賴在Window 上用分號";"隔開,linux上用":"隔開。
表達式支援通配符

java -cp .:/Users/username/*.jar   packname.mainclassname
  • 打成一個jar包

如果需要將依賴的jar包都達到一個jar包中運行,可以使用maven-shade-plugin這個插件。
這個插件的功能主要是:將依賴的jar包打包到當前jar包,並且在打包的時候把類別重命名,可以解決jar包的多版本衝突,具體可以查詢官方插件文檔。

相關教學:Java影片教學

#

以上是怎麼用maven將dubbo工程打成jar包來運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除