>  기사  >  Java  >  maven을 사용하여 dubbo 프로젝트를 jar 패키지로 패키징하여 실행하는 방법

maven을 사용하여 dubbo 프로젝트를 jar 패키지로 패키징하여 실행하는 방법

little bottle
little bottle앞으로
2019-04-30 10:41:452652검색

maven을 사용하여 dubbo 프로젝트를 실행용 jar 패키지로 패키징하기 위해 이 기사에서 설명한 방법은 다음과 같습니다. maven 패키징 플러그인 maven-jar-plugin을 사용하여 pom.xml 끝에 일부 코드를 추가합니다. 파일. 관심 있는 친구들이 한 번 살펴보세요. 도움이 되길 바랍니다

maven 패키징 방법

maven 패키징 플러그인 사용 maven-jar-plugin #🎜 🎜#pom.xml 파일 끝에 다음 코드를 추가합니다. 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-pluginmaven-dependent-plugin은 종속 jar 패키지를 지정된 디렉터리에 복사하는 것을 의미합니다.
maven-resources-plugin 종속 리소스를 지정된 디렉터리에 복사합니다. 디렉토리 디렉토리

rrreee
  • jar 패키지 실행 방법

패키징 후 디렉토리 구조 에는 클래스 파일과 필수 구성 파일 정보가 포함되어 있습니다. 제외 항목을 포함한 구성 파일)

maven을 사용하여 dubbo 프로젝트를 jar 패키지로 패키징하여 실행하는 방법

#🎜🎜#MANIFEST.MF에서 작업에 필요한 정보가 포함되어 있습니다.#🎜🎜 #rrreee #🎜🎜#java -jar#🎜🎜#Start 명령#🎜🎜#java -jar 명령을 실행할 때 META-INFMANIFEST.MF 디렉터리의 Main-Class 매개변수가 사용됩니다. 함수의 진입점은 패키징할 때 지정됩니다. #🎜🎜#rrreee#🎜🎜#java -cp#🎜🎜#Startup command#🎜🎜#rrreee#🎜🎜#프로젝트에서 외부 리소스 파일을 참조해야 하기 때문에 주로 이것을 사용합니다. 시작 방법#🎜🎜#구성 파일 주소는 절대 경로입니다#🎜🎜#rrreee#🎜🎜#-cp-classpath는 동일한 효과 #🎜🎜#java -cp는 작업이 의존하는 다른 클래스(일반적으로 클래스 라이브러리, jar 패키지 등)의 경로를 지정합니다. 여러 종속성은 Window에서 세미콜론 ";"으로 구분됩니다. linux는 ":"으로 구분됩니다. #🎜🎜#표현은 와일드카드를 지원합니다#🎜🎜#rrreee
  • jar 패키지로 만들기
#🎜🎜#모든 종속 jar 패키지를 하나의 jar 패키지에 넣고 실행해야 하는 경우 , maven-shade-plugin 플러그인을 사용할 수 있습니다. #🎜🎜#이 플러그인의 주요 기능은 종속 jar 패키지를 현재 jar 패키지에 패키징하고 패키징 중에 클래스 이름을 바꾸는 것입니다. 이를 통해 jar 패키지의 다중 버전 충돌을 해결할 수 있습니다. 공식 플러그인 문서를 확인하세요. #🎜🎜##🎜🎜#관련 튜토리얼: #🎜🎜#Java 비디오 튜토리얼#🎜🎜##🎜🎜##🎜🎜#

위 내용은 maven을 사용하여 dubbo 프로젝트를 jar 패키지로 패키징하여 실행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제