Maven을 사용하여 모든 종속성을 포함하는 Java 프로젝트를 빌드하는 방법은 무엇입니까? maven-resources, maven-dependency 및 maven-jar 플러그인
게시 됨: 2016-11-26
엔터프라이즈 수준의 Java 프로젝트에서 작업하고 있습니까? Maven POM.xml
파일을 사용하여 모든 종속 항목을 최신 상태로 유지하시겠습니까? 프로젝트에 src folder
, resources folder
, lib folder
등이 있습니까? 이 프로젝트를 타사 클라이언트에 배포하려면 어떻게 해야 할까요? 다른 독립형 하드웨어가 있습니까?
Maven 플러그인을 사용하여 Java 프로젝트의 실행 파일을 빌드하고 생성하는 간단한 방법이 있습니다. 아래 샘플 Java 프로젝트를 살펴보십시오.

시작하고 프로젝트의 모든 부분을 설명하겠습니다.
-
CrunchifyMavenBuildPlugins
는 Maven 프로젝트입니다. Java 프로젝트가 있고 Maven 프로젝트로 변환하려면 이 튜토리얼을 따르십시오. - 두 개의 폴더가 있습니다.
src
및resources.
-
resources
폴더 안에는 실행 가능한 쉘 스크립트 파일이 포함된Scripts
라는 폴더가 있습니다. -
CrunchifyMain.java
는 내부에main(String args[])
메소드가 있는 주요 시작점입니다. -
pom.xml
파일에 포함된 모든 종속 항목과 함께 실행 가능한 .jar 프로젝트를 빌드하는 Maven 플러그인을 추가합니다.
1 단계
pom.xml
파일을 열고 <build>
아래에 추가하십시오. 참고: 아래에 3개의 플러그인 을 추가했습니다.
-
maven-resources-plugin
: 리소스 플러그인은 프로젝트 리소스를 출력 디렉터리로 복사하는 작업을 처리합니다. 주요 리소스는 주요 소스 코드와 관련된 리소스입니다. -
maven-dependency-plugin:
종속성 플러그인은 아티팩트를 조작하는 기능을 제공합니다. 로컬 또는 원격 저장소에서 지정된 위치로 아티팩트를 복사 및/또는 압축 해제할 수 있습니다. -
maven-jar-plugin:
이 플러그인은 항아리를 빌드하고 서명하는 기능을 제공합니다.
다음은 완전한 pom.xml 파일입니다. 주로 <build> 태그에 관심이 있을 것입니다.
아래에서 필요에 따라 디렉토리 위치, 파일 이름 및 경로를 업데이트하십시오.
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifyMavenBuildPlugins < / groupId > < artifactId > CrunchifyMavenBuildPlugins < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < name > CrunchifyMavenBuildPlugins < / name > < properties > < project . build . sourceEncoding > UTF - 8 < / project . build . sourceEncoding > < / properties > < dependencies > < dependency > < groupId > log4j < / groupId > < artifactId > log4j < / artifactId > < version > 2.15.0 < / version > < / dependency > < dependency > < groupId > com . googlecode . json - simple < / groupId > < artifactId > json - simple < / artifactId > < version > 1.1 < / version > < / dependency > < dependency > < groupId > axis < / groupId > < artifactId > axis < / artifactId > < version > 1.4 < / version > < / dependency > < dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.8.3 < / version > < / dependency > < dependency > < groupId > commons - collections < / groupId > < artifactId > commons - collections < / artifactId > < version > 3.2.1 < / version > < / dependency > < dependency > < groupId > commons - configuration < / groupId > < artifactId > commons - configuration < / artifactId > < version > 1.10 < / version > < / dependency > < dependency > < groupId > commons - io < / groupId > < artifactId > commons - io < / artifactId > < version > 2.4 < / version > < / dependency > < dependency > < groupId > javax . mail < / groupId > < artifactId > mail < / artifactId > < version > 1.4.7 < / version > < / dependency > < dependency > < groupId > javax . servlet < / groupId > < artifactId > servlet - api < / artifactId > < version > 2.5 < / version > < / dependency > < dependency > < groupId > org . json < / groupId > < artifactId > json < / artifactId > < version > 20140107 < / version > < / dependency > < dependency > < groupId > axis < / groupId > < artifactId > axis - saaj < / artifactId > < version > 1.4 < / version > < / dependency > < dependency > < groupId > wsdl4j < / groupId > < artifactId > wsdl4j < / artifactId > < version > 1.6.3 < / version > < / dependency > < dependency > < groupId > com . google . zxing < / groupId > < artifactId > core < / artifactId > < version > 2.0 < / version > < / dependency > < / dependencies > < build > < pluginManagement > < plugins > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - compiler - plugin < / artifactId > < version > 2.3.1 < / version > < configuration > < source > 1.7 < / source > < target > 1.7 < / target > < / configuration > < / plugin > < / plugins > < / pluginManagement > < plugins > < plugin > < artifactId > maven - resources - plugin < / artifactId > < version > 2.6 < / version > < executions > < execution > < id > copy - resources < / id > < phase > validate < / phase > < goals > < goal > copy - resources < / goal > < / goals > < configuration > < outputDirectory > $ { basedir } / target / Crunchify < / outputDirectory > < resources > < resource > < directory > resources < / directory > < filtering > true < / filtering > < / resource > < / resources > < / configuration > < / execution > < / executions > < / plugin > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - dependency - plugin < / artifactId > < executions > < execution > < id > copy - dependencies < / id > < phase > prepare - package < / phase > < goals > < goal > copy - dependencies < / goal > < / goals > < configuration > < outputDirectory > $ { project . build . directory } / Crunchify / lib < / outputDirectory > < overWriteReleases > false < / overWriteReleases > < overWriteSnapshots > false < / overWriteSnapshots > < overWriteIfNewer > true < / overWriteIfNewer > < / configuration > < / execution > < / executions > < / plugin > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - jar - plugin < / artifactId > < configuration > < archive > < manifest > < addClasspath > true < / addClasspath > < classpathPrefix > lib / < / classpathPrefix > < mainClass > com . crunchify . tutorial . CrunchifyMain < / mainClass > < / manifest > < manifestEntries > < Class - Path > . < / Class - Path > < / manifestEntries > < / archive > < finalName > Crunchify / Crunchify < / finalName > < / configuration > < / plugin > < / plugins > < / build > < / project > |
2 단계
Project -> Run As -> Maven Build


3단계
" clean install
" 인수 제공

4단계
다음과 같은 결과가 표시되어야 합니다.

5단계
이제 폴더 폴더 /target/Crunchify
를 확인하여 그 아래의 모든 항목을 확인하십시오.

6단계
이제 아래 명령으로 프로젝트를 실행하십시오. $bash> java -jar Crunchify.jar
프로젝트 구축에 문제가 있으면 알려주십시오. 즐겁고 행복한 코딩하세요.