maven 포장 프로젝트 의 몇 가지 방식

9060 단어 maven포장 하 다.
Maven 은 mvn package 명령 을 사용 하여 프로젝트 를 포장 할 수 있 으 며,자바-jar xxx.jar 를 사용 하여 jar 파일 을 실행 하면'no main manifest attribute,in xxx.jar'(Main-Class 설정 없 음),ClassNotFoundException(의존 팩 을 찾 을 수 없 음)등의 오류 가 발생 합 니 다.
jar 가방 이 자바-jar xxx.jar 를 통 해 직접 실 행 될 수 있 으 려 면 만족 이 필요 합 니 다:
1.jar 가방 에 있 는 META-INF/MANIFEST.MF 에 Main-Class 를 지정 해 야 프로그램의 입구 가 어디 에 있 는 지 확인 할 수 있 습 니 다.
2.의존 패키지 에 불 러 올 수 있어 야 합 니 다.
Maven 을 사용 하면 직접 실행 할 수 있 는 jar 가방 을 만 들 수 있 고 필요 에 따라 적당 한 방법 을 선택 할 수 있 습 니 다.
방법 1:maven-jar-plugin 과 maven-dependency-plugin 플러그 인 을 사용 하여 포장 합 니 다.
이런 방식 으로 jar 패 키 지 를 생 성 하 는 단점 은 생 성 된 jar 패키지 가 너무 많아 관리 하기 어렵 다 는 것 이다.다른 두 가지 방식 은 하나의 jar 파일 만 생 성 하고 프로젝트 자체 의 코드,자원 과 모든 의존 패 키 지 를 포함한다.

<build>
        <plugins>
            <!--          ,   MainClass,         ,               -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <!--   MANIFEST.MF   Class-Path -->
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>cn.zoom.wqz.filter.Application</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <!--                 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!--                     target  lib                -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
방법 2:maven-assembly-plugin 플러그 인 으로 포장
포장 방법:

mvn package assembly:single  
설정 방법:

        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>cn.zoom.wqz.filter.Application</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
포장 후 target 디 렉 터 리 에 xxx-jar-with-dependencies.jar 파일 을 생 성 합 니 다.이 파일 은 자신의 프로젝트 의 코드 와 자원 을 포함 할 뿐만 아니 라 가방 에 의존 하 는 모든 내용 도 포함 합 니 다.그래서 자바-jar 를 통 해 직접 실행 할 수 있 습 니 다.
또한 뮤 직 비디오 패키지 로 직접 포장 할 수 있 습 니 다.assembly:single 이 필요 없 지만 설정 을 추가 해 야 합 니 다.
  단,프로젝트 에 spring Framework 를 사용 하면 이러한 방식 으로 만들어 진 가방 이 실 행 될 때 오류 가 발생 할 수 있 습 니 다.아래 방법 3 을 사용 하면 처리 할 수 있 습 니 다.

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>cn.zoom.wqz.filter.Application</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <!--   <phase>package</phase>、<goal>single</goal>      package   ,  assembly:single -->
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
방법 3:maven-shade-plugin 플러그 인 으로 포장

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>cn.zoom.wqz.filter.Application</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
설정 이 완료 되면 mvn package 를 실행 하면 포장 할 수 있 습 니 다.target 디 렉 터 리 에 jar 패키지 두 개 를 생 성 합 니 다.original-xxx.jar 파일 이 아니 라 다른 것 입 니 다.maven-assembly-plugin 과 마찬가지 로 생 성 된 jar 파일 은 모든 의존 도 를 포함 하고 있 기 때문에 직접 실행 할 수 있 습 니 다.
프로젝트 에 Spring Framework 를 사용 하면 jar 패키지 에 의존 합 니 다.실행 중 XML schema 파일 을 읽 는 중 오류 가 발생 합 니 다.Spring Framework 의 여러 jar 패키지 에 같은 파일 spring.handlers 와 spring.schemas 가 포함 되 어 있 기 때문에 jar 패 키 지 를 만 들 면 서로 덮어 씁 니 다.서로 영향 을 주지 않도록 AppendingTransformer 를 사용 하여 파일 내용 을 추가 로 통합 할 수 있 습 니 다.

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>cn.zoom.wqz.filter.Application</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>
마 븐 포장 에 관 한 몇 가지 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.마 븐 포장 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기