gradle vs maven maven plugins
이 튜토리얼에서는 Gradle과 Maven의 차이점에 대해 설명합니다. 다양한 Maven 플러그인 및 구성에 대해서도 배우게됩니다.
Maven과 마찬가지로 Gradle은 빌드를 위해 Java 개발자가 사용하는 자동화 도구입니다. Gradle은 오픈 소스 도구이며 Groovy에서 개발 된 도메인에 특정한 언어를 사용합니다.
=> 여기에서 Perfect Maven 교육 가이드를 확인하세요.
학습 내용 :
Gradle 대 Maven
Gradle과 Maven의 주요 차이점은 아래 표로 정리되어 있습니다.
Gradle | 메이븐 |
---|---|
성능 측면에서 Gradle은 제공된 입력 또는 출력이 아닌 현재 실행중인 작업 만 처리하므로 더 좋습니다. | Maven은 프로젝트 생성에 이전 빌드 아티팩트 또는 캐시를 사용하지 않으므로 새 프로젝트를 생성하는 데 필요한 시간이 더 많습니다. |
Groovy에서 개발 한 자동화 빌드 시스템입니다. | 빌드 및 프로젝트 관리 도구입니다. |
Gradle은 프로젝트 빌드 용 xml 파일에 의해 구동되지 않고 대신 도메인 별 언어 인 Groovy를 사용합니다. 프로젝트 정보는 Gradle 도구에 보관됩니다. | Maven은 종속성, 플러그인 및 프로필 등에 대한 정보가 포함 된 xml 파일로 구동됩니다. |
Gradle은 점진적으로 작동하며 더 빠른 빌드 완료를 제공합니다. | Maven은 점진적 접근 방식을 취하지 않으며 Gradle보다 빌드 타이밍 측면에서 느립니다. |
Gradle 스크립트는 간단하고 길지 않으며 쉽게 이해할 수 있습니다. | Maven에는 설명적이고 길며 쉽게 이해할 수없는 xml 파일이 있습니다. |
Gradle은 IDE를 지원하는 도구에서 사용할 수있는 많은 옵션 측면에서 많은 유연성을 가지고 있기 때문에 쉽게 사용자 지정할 수 있습니다. | Maven의 사용자 정의는 쉽지 않으며 IDE를 지원하지 않기 때문에 때때로 불가능합니다. |
Gradle 도구의 목표는 프로젝트에 새로운 기능을 추가하는 것입니다. | Maven 도구의 목표는 고정 된 시간에 프로젝트를 완료하는 것입니다. |
Gradle에서 Java 컴파일은 필수 단계가 아닙니다. | Maven에서 컴파일은 필수 단계입니다. |
Gradle은 비교적 현대적인 도구이며 사용자 수가 제한되어 있습니다. | Maven은 친숙한 도구이며 Java 개발자들 사이에서 인기가 있습니다. |
xml을 사용하지 않고 Gradle에서 프로젝트에 대한 다양한 종속성을 추가 할 수 있습니다. | 많은 종속성을 xml 파일 (pom)에 추가하여 프로젝트에 추가 할 수 있으므로 Gradle보다 더 복잡하고 관리하기 어렵습니다. |
Build.gradle 파일에는 그룹, baseName 및 버전과 같은 요소가 포함되어 있습니다. | Pom.xml 파일에는, 및. |
Maven 대 Gradle의 몇 가지 차이점
Gradle은 수행해야하는 작업 그룹으로 구성됩니다. Maven은 일정하고 정확한 단계 모델을 가지고 있습니다. Maven 목표는 프로젝트 단계와 연결되어 있으며 각 목표는 Gradle 작업과 유사합니다.
공연
성능에 관한 한 Gradle과 Maven은 서로 다른 모듈에서 둘 이상의 빌드를 병렬로 실행할 수 있습니다.
그러나 Gradle은 증분 빌드 접근 방식을 따르고 작업이 수정되었는지 여부를 확인하고 업데이트되는 파일 만 처리합니다.
Gradle은 아래 나열된 기능으로 인해 더 나은 성능을 제공합니다.
- 증분 방식의 Java 클래스 컴파일.
- 유사한 입력으로 다른 Gradle 빌드의 빌드 아티팩트를 재사용합니다.
- 더 많은 API 사용.
- 컴파일러 데몬의 도움으로 더 빠른 컴파일.
빌드 캐시 관리는 Gradle을 Maven보다 훨씬 빠르게 만듭니다.
적응성
Gradle은 가장 기본적인 방법론으로 확장 할 수있는 방식으로 설계 되었기 때문에 Google에서 Android 용 빌드 도구로 사용합니다. Gradle의 모델은 C 또는 C ++ 개발에 활용할 수 있으며 다른 환경으로 확장 할 수 있습니다.
Maven은 쉽게 커스터마이징 할 수 없으며 종종 실행 가능하지 않습니다. 따라서 복잡하거나 독점적 인 요구 사항을 처리 할 필요가없는 경우 Maven 빌드를 더 쉽게 이해할 수 있습니다. 그러나 Gradle은 사용을 위해 쉽게 사용자 정의 할 수 있습니다.
Gradle은 빌드 스캔에서 코딩, 디버깅 및 빌드 최적화 작업을위한 흥미로운 대화 형 웹 UI를 제공합니다. 빌드의 트렌드, 히스토리 및 기타 매개 변수에 대한 중요한 정보를 제공합니다.
종속성 관리
Gradle은 Maven보다 더 나은 API 및 종속성 구현을 제공합니다. 또한 일치 캐시를 허용합니다. 즉, 여러 프로젝트가 서로 덮어 쓰지 않고 공통 캐시를 활용할 수 있습니다. Gradle에는 체크섬이 있으며 저장소와 함께 캐시를 동기화합니다.
다음과 같은 종속성 관리 특성이 있습니다.
- 호환 가능한 라이브러리에 대한 대체 규칙.
- ReplacedBy 규칙.
- 프로젝트의 종속성을 외부 항목과 복원하거나 그 반대로 복원하십시오.
Gradle과 Maven 모두 동적 및 전이 종속성이 있습니다. Maven에는 로컬, 중앙 및 원격 저장소가 있고 Gradle에는 JCenter가 있습니다. 또한 조직 내부에 사용자 정의 된 저장소가 있습니다.
Gradle 및 Maven의 코딩 예제
2.0.0 com.softwareTest Java-builds jar 2.0 j unit junit 2.10 org.apache.maven.plugins maven-surefire-plugin 2.2.1
jar 파일을 생성하는 Maven 목표를 실행하기 위해 다음 Maven 명령이 사용됩니다.
C #의 oops 개념과 숙련 된 예제
mvn package
따라서 pom.xml 파일이 설명 적이며 여러 작업, 구성 및 종속성이있는 Maven 프로젝트에 긴 xml 파일이 있음을 알 수 있습니다.
동일한 결과를 수행하는 해당 build.gradle 코드는 다음과 같습니다.
apply plugin:'java' apply plugin:'maven' group = 'com.softwareTest' version ='2.0' repositories { mavenCentral() } dependencies { testCompile group:'junit', name:'junit', version:'2.10' }
따라서 Maven에 비해 Gradle 스크립트가 더 짧다는 것을 알 수 있습니다. 아래 명령은 작업 그룹을 실행하는 데 사용됩니다.
gradle tasks –all
Gradle이 Maven보다 더 능력이 있다는 것을 알 수 있습니다. 그러나 Gradle의 이러한 모든 추가 기능이 필요하지 않은 경우가있을 수 있습니다. 따라서 Maven은 소규모 프로젝트에 더 적합하지만 Gradle은 대부분 더 큰 프로젝트에 사용됩니다.
Gradle 대 Maven 기본 명령
다음 표에는 Gradle과 Maven의 몇 가지 기본 명령이 나열되어 있습니다.
목적 | Gradle 명령 | Maven 명령 |
---|---|---|
확실한 | Junit 테스트는 격리 된 클래스 로더에서 실행됩니다. | |
WAR / EAR / JAR를 생성하려면 | gradle 조립 | mvn 패키지 |
실행하고 컴파일하려면 | gradle 테스트 | mvn 테스트 |
빌드 디렉토리 삭제 | gradle 청소 | mvn clean |
Eclipse와 통합 | Gradle Eclipse | mvn 이클립스 : 이클립스 |
설치용 | gradle 설치 | mvn 설치 |
버전을 얻으려면 | gradle-버전 | mvn-버전 |
Gradle을 Maven으로 변환하거나 반대로 변환 할 수 있습니다.
Maven을 Gradle로 변경하려면 아래 단계를 따르십시오.
#1) Maven 프로젝트 폴더 (pom.xml 파일 위치)로 이동합니다.
#두) 명령 실행 gradle init.
그러면 Gradle 빌드가 동시에 생성됩니다. settings.gradle 파일 및 build.gradle 파일이 생성됩니다.
Gradle을 Maven으로 변경하려면 다음 단계를 순서대로 따릅니다.
# 1) build.gradle 파일에는 Maven 플러그인이 있어야합니다.
# 2) build.gradle 파일에는 다음 코드 블록이 있어야합니다.
apply plugin: 'java' apply plugin: 'maven' group = 'com.test' version = '0.4' dependencies { compile 'commons-lang:commons-lang:2.3' }
#삼) 그런 다음 실행 gradle 설치.
그러면 pom 하위 폴더 안에 pom-default.xml 파일이 생성됩니다.
Maven 구성
사용 및 빌드 된 프로젝트에 대한 Maven 구성 정보는 다음 위치에 남아 있습니다.
- MAVEN_OPTs 환경 변수 : JVM (Java Virtual Machine)을 시작하는 데 필요한 정보가 포함되어 있으며 JVM의 메모리 설정을 -Xms256m -Xmx512m 값으로 설정할 수있는 것과 같은 추가 기능도 제공합니다.
- Settings.xml 파일 : 이 파일은 USER_HOME / .m2 디렉토리에 있습니다. 이 파일은 Maven에서 빌드 된 모든 프로젝트에서 사용되는 대부분의 구성을 처리합니다.
- .mvn 폴더 : 이 폴더는 프로젝트 디렉토리의 최상위 수준에서 위치를 찾습니다. jvm.config, maven.config 및 extensions.xml 파일에는 프로젝트 별 구성에 대한 정보가 있습니다.
- .mvn / extension.xml 파일
- .mvn / maven.config 파일
- .mvn / jvm.config 파일
Maven의 구성은 아래 나열된 수준에서 수행됩니다.
- 설치: 이것은 Maven 설치 중에 수용됩니다.
- 계획: 이것은 pom.xml 파일에서 유지되는 정적 파일입니다.
- 사용자: 이것은 특정 사용자를 위해 구성됩니다.
프로젝트 구성은 전체 프로젝트에 적용되고 다른 구성 (설치 및 사용자)은 작업중인 환경에 적용됩니다. 설치 및 사용자 구성은 공유 프로젝트 데이터의 일부로 추가 할 수 없습니다.
로컬 저장소 구성
로컬 저장소 위치는 사용자 구성의 일부로 변경할 수 있습니다. 기본적으로 위치는 .m2 디렉토리입니다. 이것은 아래 xml 코드에 의해 달성됩니다.
path to the directory
프록시 구성
프록시 구성은 설정에서 유지할 수 있습니다.
병렬 아티팩트 확인 구성
Maven은 한 번에 다양한 그룹에서 최대 5 개의 아티팩트를 다운로드합니다.
두 개의 아티팩트를 다운로드하려면 다음 명령을 지정해야합니다.
mvn -Dmaven.artifact.threads = 2 확인
배포 및 보안 구성
섹션에서는 특정 프로젝트에 배포 할 저장소에 대해 설명합니다. 사용자 이름, 비밀번호 및 기타 보안 매개 변수와 같은 정보는 해당 프로젝트에 배치 할 수 없습니다. 이 정보를 제공하려면 프로젝트 내 배포 저장소의 ID에 매핑 된 정보를 추가해야합니다.
이것은 아래 xml 코드에 의해 달성됩니다.
testrepository test password
프로필 구성
Maven 저장소를 구성하여 프로필에 넣을 수 있습니다. 한 번에 둘 이상의 프로필이있을 수 있습니다. 요구 사항에 따라 하나의 활성 프로필을 유지하여 다양한 환경으로 전환 할 수 있습니다.
기타 선택적 구성
각 프로젝트에 고유하지 않은 환경 별 구성을 가지려면 설정을 구성해야합니다.
예를 들어 데이터웨어 하우스의 차원 모델링
Maven에는 설치 또는 사용자 홈 디렉토리에있는 설정 파일이 포함되어 있습니다. 아래에 표시된대로 일부 환경 매개 변수의 구성을 처리합니다.
- 서버 사용자 이름 및 비밀번호
- 저장소 관리자의 위치
- HTTP 프록시 서버
보안 구성
Maven 2.1.0 이상까지는 설정 파일 내에서 비밀번호를 암호화하는 옵션이 있습니다. 그러나 암호화하기 전에 마스터 암호를 구성해야합니다.
Maven 플러그인
Maven 플러그인은 Maven 프레임 워크의 필수 부분입니다. 각 플러그인은 특정 작업에 할당됩니다.
다음과 같이 두 가지 유형의 플러그인이 있습니다.
- 플러그인 빌드 : 빌드시 실행되며 pom.xml 파일의 빌드 태그 아래에 설명되어야합니다.
- 플러그인보고 : 사이트 생성시 실행되며 pom.xml 파일의보고 태그 아래에 설명되어야합니다.
아래 목록은 일부 Maven 핵심 플러그인을 보여줍니다.
핵심 플러그인 | 수행 된 작업 |
---|---|
깨끗한 | 빌드 후 아티팩트를 정리합니다. |
컴파일러 | 자바 소스 코드가 컴파일됩니다. |
전개 | 빌드 아티팩트는 원격 저장소에 배포됩니다. |
설치 | 빌드 아티팩트는 로컬 저장소에 설치됩니다. |
검증 자 | 통합 테스트에 사용됩니다. |
자원 | 출력 디렉토리는 Jar에 포함 할 자원의 사본을 가져옵니다. |
대지 | 현재 프로젝트 사이트가 생성됩니다. |
검증 자 | 통합 테스트에 사용되며 특정 조건을 확인합니다. |
Maven Reporting 플러그인 중 일부는 다음과 같습니다.
플러그인보고 | 수행 된 작업 |
pmd | pmd 보고서가 생성됩니다. |
변경 로그 | SCM의 최근 변경 사항은 목록 형식으로 생성됩니다. |
변화 | 이슈 트래커에 대한 보고서가 생성됩니다. |
체크 스타일 | 체크 스타일 보고서가 생성됩니다. |
Javadoc | 프로젝트에 대한 Java 문서가 생성됩니다. |
확실한 보고서 | 단위 테스트 결과는 보고서 형태로 생성됩니다. |
linkcheck | 프로젝트 문서에 대한 Linkcheck 보고서가 생성됩니다. |
jxr | 소스 상호 참조가 생성됩니다. |
FAQ 섹션
Q # 1) Maven이 Gradle보다 낫습니까?
대답: Gradle은 증분 및 작업 회피 접근 방식을 사용합니다. Gradle은 입력 및 출력 작업을 모니터링하고 필요한 작업을 실행합니다. 그러나 소규모 프로젝트의 경우 Maven이 여전히 선호되는 반면 Gradle은 크고 복잡한 프로젝트에 적합합니다.
Q # 2) Gradle이 Maven보다 빠른 이유는 무엇입니까?
대답: Gradle은 아래의 Gradle 접근 방식으로 인해 Maven보다 훨씬 빠릅니다.
- 메모리에서 건물 세부 정보를 준비하는 Gradle 데몬 사용.
- 증분 방식의 컴파일.
- 이전 빌드에서 아티팩트를 가져 오는 빌드 캐시 사용.
- Java 플러그인의 도움으로 Gradle에서 효율적인 방식으로 종속성 모델링.
Q # 3) Maven Gradle이란 무엇입니까?
대답: Gradle은 Apache Ant 및 Apache Maven의 기능을 기반으로 개발 된 자동화 빌드 도구입니다. 오픈 소스이며 Groovy 기반 도메인 관련 언어에서 작동합니다. 프로젝트 종속성 및 구성을 위해 Maven에서 사용하는 pom.xml 파일에 의해 구동되지 않습니다.
Q # 4) Maven이 선호되는 이유는 무엇입니까?
대답:
Maven이 선호되는 이유는 다음과 같습니다.
- 모든 프로젝트 종속성에 대한 중앙 저장소.
- 조직 내에서 공통 폴더 구조를 유지합니다.
- Git과 같은 버전 제어 도구 및 Jenkins와 같은 지속적 통합 도구와 통합 할 수 있습니다.
- 빌드 프로세스가 더 간단하고 쉽고 균일합니다.
Q # 5) Maven은 Java 전용입니까?
대답: Maven은 일반적으로 Java 프로젝트에 사용되는 프로젝트 관리 및 빌드 도구입니다. 그러나 Ruby, C #, Scala 등으로 개발 된 프로젝트에는 사용할 수 있습니다.
Q # 6) Eclipse에서 Maven이 사용되는 이유는 무엇입니까?
대답: Eclipse IDE는 Maven 저장소에서 종속성 및 구성을 자동으로 다운로드합니다. 또한 새 Maven 프로젝트 생성, 기존 Maven 프로젝트 및 pom .xml에 대한 지원은 Eclipse의 도움으로 수행 할 수 있습니다.
Q # 7) Gradle은 어떤 언어입니까?
대답: Gradle은 빌드를 위해 DSL이라고도하는 도메인 관련 언어를 제공합니다. 이 언어는 Groovy 및 Kotlin에서 얻을 수 있습니다.
소프트웨어 개발 테스트 유형
Q # 8) Maven의 장점은 무엇인가요?
Maven에는 다음과 같은 종속성이 있습니다.
- 모든 프로젝트 종속성에 대한 중앙 저장소.
- 조직 내에서 공통 폴더 구조를 유지합니다.
- Git과 같은 버전 제어 도구 및 Jenkins와 같은 지속적 통합 도구와 통합 할 수 있습니다.
- 빌드 프로세스가 더 간단하고 쉽습니다.
결론
이 자습서에서는 Gradle 대 Maven과 같은 개념, Gradle을 Maven으로 변환하는 방법, 그 반대로 Maven 구성 및 플러그인에 대해 설명했습니다. 또한 Maven 및 Gradle의 기본 명령 중 일부를 살펴 보았습니다.
Maven 플러그인에 관한 한,보고 및 핵심 Maven 플러그인 중 일부에 대해 논의했습니다.
Maven은 시장에서 뜨거운 주제이므로 주제에 대한 이해를 높이고이 도구에 대한 전문 지식을 개발해야합니다.
추천 도서
- Maven이란 무엇인가-초보자를위한 Maven 튜토리얼
- Selenium으로 Gradle 프로젝트를 만드는 방법
- Gradle을 사용하여 프로젝트를 빌드, 테스트 및 배포하는 방법
- Gatling 스크립트 및 Maven Archetype을 사용하여 Gatling 프로젝트 생성
- Maven Surefire 플러그인을 사용하여 Maven과 TestNg 통합
- Maven에서 POM (프로젝트 개체 모델) 및 pom.xml이란?
- Eclipse Java IDE로 Maven 구성
- 31 가장 자주 묻는 Maven 인터뷰 질문 및 답변