maven 포장 프로젝트 의 몇 가지 방식
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>
마 븐 포장 에 관 한 몇 가지 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.마 븐 포장 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows에서 CodeArtifact(Maven)용 토큰을 자동으로 생성하는 방법CodeArtifact를 사용한 적이 있거나 사용할 계획이라면 매일 모든 Maven 프로젝트에서 수동으로 토큰(CODEARTIFACT_AUTH_TOKEN)을 생성해야 합니다. 이는 어려울 수 있으며 개발 속도를 늦출...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.