Gradle 의 기본 사용

8282 단어 Gradle쓰다
1.Gradle 은 Maven 에 비해 우세 합 니 다.
설정 이 간결 하 다.
Maven 은 pom.xml 로 관리 하고 jar 패키지 의 최소 5 줄 코드 를 도입 합 니 다.Gradle 은 한 줄 만 필요 합 니 다.
구축 속도 가 빠르다.
Gradle 은 daemon 방식 의 운행 을 지원 합 니 다.시작 속도 가 빠 르 고 daemon 기반 의 증분 구축 이 있 습 니 다.JVM 의 운행 을 충분히 이용 할 때 최적화 되 고 캐 시 데이터 구축 속도 보다 Maven 이 훨씬 빠 릅 니 다.
더 좋 은 유연성,확장 성
Gradle 은 Maven 등 구축 도구 에 비해 일련의 API 를 제공 하여 프로젝트 의 구축 과정 을 수정 하거나 맞 출 수 있 습 니 다.
기본 설정
로 컬 창고 주 소 를 설정 합 니 다기본 로 컬 창고 주 소 는~/.gradle 입 니 다.Windows 에 서 는 많은 CD 공간 을 차지 합 니 다.
환경 변수 설정,GRADLEUSER_HOME=/your/path
Maven 현지 창고 재 활용reposcories 에서 mavenLocal()을 설정 하면 됩 니 다.init.gradle 전역 설정 이 라면 아래 init.gradle 파일 을 참고 하 십시오.
Maven 로 컬 창고 찾기 경로:
(1)USER_HOME/.m2/settings.xml
(2)M2_HOME/conf/settings.xml
(3)USER_HOME/.m2/repository
국내 미 러 가속국내 에서 외국 창 고 를 방문 하 는 주소 가 매우 느 리 고 첫 번 째 방법 은 각 항목 에 reposcories 를 설치 하 는 것 이다.

repositories {
 mavenLocal()
 'maven(http://maven.aliyun.com/nexus/content/groups/public/)'
 mavenCentral()
}
더 추천 하 는 방법 은 Maven 과 유사 한 settings.xml 전역 설정 입 니 다.이전 설정 의 GRADLEUSER_HOME 경로 에서 init.gradle 파일 을 추가 합 니 다.아래 설정 파일 에는 아 리 클 라 우 드 의 Gradle 프 록 시 를 사용 하여 jcenter,google,maven 창 고 를 지원 합 니 다.

gradle.projectsLoaded {
 rootProject.allprojects {
  buildscript {
   repositories {
    def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
    def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
    def NEXUS_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
    all { ArtifactRepository repo ->
     if (repo instanceof MavenArtifactRepository) {
      def url = repo.url.toString()
      if (url.startsWith('https://jcenter.bintray.com/')) {
       project.logger.lifecycle "Repository ${repo.url} replaced by $JCENTER_URL."
       println("buildscript ${repo.url} replaced by $JCENTER_URL.")
       remove repo
      }
      else if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
       project.logger.lifecycle "Repository ${repo.url} replaced by $GOOGLE_URL."
       println("buildscript ${repo.url} replaced by $GOOGLE_URL.")
       remove repo
      }
      else if (url.startsWith('https://repo1.maven.org/maven2')) {
       project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
       println("buildscript ${repo.url} replaced by $REPOSITORY_URL.")
       remove repo
      }
     }
    }
    jcenter {
     url JCENTER_URL
    }
    google {
     url GOOGLE_URL
    }
    maven {
     url NEXUS_URL
    }
   }
  }
  repositories {
   def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
   def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
   def NEXUS_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
   all { ArtifactRepository repo ->
    if (repo instanceof MavenArtifactRepository) {
     def url = repo.url.toString()
     if (url.startsWith('https://jcenter.bintray.com/')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $JCENTER_URL."
      println("buildscript ${repo.url} replaced by $JCENTER_URL.")
      remove repo
     }
     else if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $GOOGLE_URL."
      println("buildscript ${repo.url} replaced by $GOOGLE_URL.")
      remove repo
     }
     else if (url.startsWith('https://repo1.maven.org/maven2')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
      println("buildscript ${repo.url} replaced by $REPOSITORY_URL.")
      remove repo
     }
    }
   }
   jcenter {
    url JCENTER_URL
   }
   google {
    url GOOGLE_URL
   }
   maven {
    url NEXUS_URL
   }
  }
 }
}
3.최고의 실천
다 중 모듈 설정
조금 큰 프로젝트 는 모듈 별로 개발 되 는데 Gradle 은 Maven 에 비해 IDEA 로 프로젝트 의 코드 를 실행 할 때 의존 하 는 다른 모듈 을 자동 으로 컴 파일 하 는 것 이 장점 입 니 다.
프로젝트 1 급 디 렉 터 리 에 settings.gradle 프로필 추가:

rootProject.name = 'my-roject-name'

include 'module1'
include 'module2'
그 중에서 module 1,module 2 는 서브 모듈 의 폴 더 이름 입 니 다.서브 모듈 에 서브 모듈 을 설정 하 는 build.gradle 이 필요 합 니 다.
모듈 내 의존,예 를 들 어 module 2 는 module 1 에 의존 하고 module 2 의 build.gradle 설정 파일 에 추가 합 니 다.

dependencies {
 compile project(":module1")
}
  • profile 지원
  • profflee 는 서로 다른 환경의 프로필 을 불 러 오 는 데 사 용 됩 니 다.필자 가 있 는 회사 에서 dev,test,staging,prod 네 가지 환경 을 추천 합 니 다.
    gradle.properties 프로필 추가 기본 프로필 지정
    
    profile=dev
    프로필 을 시작 하고 서로 다른 경로 의 설정 을 불 러 옵 니 다.build.gradle 에 설정 을 추가 합 니 다.
    
    ext {
     profile = project['profile']
    }
    sourceSets {
     main {
      resources {
       srcDirs = ["src/main/resources/", "src/main/profiles/${profile}"]
      }
     }
    }
    명령 행 매개 변수 지정 profile:
    
    gradle build -Pprofile=prod
    gradle 프로젝트 초기 화
    gradle 를 설치 하고 프로젝트 의 최상 위 디 렉 터 리 에서 실행 합 니 다:
    
    gradle init
    현재 디 렉 터 리 에 pom.xml 이 있 으 면 Maven 프로젝트 에서 Gradle 프로젝트 를 초기 화 할 지 여 부 를 알려 줍 니 다.yes 리 턴 을 선택 하 십시오.
    매개 변수 문서:https://docs.gradle.org/current/userguide/build_init_plugin.html
    bom 파일 도입
    pom 파일 은 Maven 에서 매우 유용 한 기능 으로 여러 항목 의 버 전 번 호 를 통일 하 는 데 편리 합 니 다.Maven 에서 설정 하 는 방식 은 다음 과 같 습 니 다.
    
    <dependencyManagement>
      <dependencies>
       <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
       </dependency>
      </dependencies>
    </dependencyManagement>
    Gradle 에서 유사 한 동작 을 지원 하 는 플러그 인 이 있 습 니 다.
    
    //    
    plugins {
     id "io.spring.dependency-management" version "1.0.10.RELEASE"
    }
    //  bom
    dependencyManagement {
     imports {
      mavenBom 'org.springframework.boot:spring-boot-dependencies:${spring-boot.version}'
     }
    }
    //  bom,        
    dependencies {
     implementation "org.springframework.boot:spring-boot-starter-web"
    }
  • parent 파일 도입
  • maven 에서 parent 를 실행 하 는 것 은 여러 항목 을 관리 하 는 데 자주 사용 되 는 방식 입 니 다.parent 는 프로젝트 의 기본 설정 을 지정 하 였 습 니 다.설정 방식 은 다음 과 같 습 니 다.
    
    <parent>
     <groupId>com.lesofn.blog</groupId>
     <artifactId>test-parent</artifactId>
     <version>0.0.1</version>
    </parent>
    Maven 의 parent 는 두 가지 역할 을 합 니 다.하 나 는 bom 과 유사 한 통일 관리 버 전 입 니 다.즉,parent 중의 dependency Management 이 고 다른 하 나 는 기본 jar 패키지 의 인용 입 니 다.즉,부모 pom 중의 dependencies 입 니 다.
    Gradle 에 서 는 위의 io.spring.dependency-management 플러그 인 을 통 해 유사 한 효 과 를 구현 할 수 있 습 니 다.
    
    //    
    plugins {
     id "io.spring.dependency-management" version "1.0.10.RELEASE"
    }
    //  parent,  maven dependencyManagement   ,       
    dependencyManagement {
     imports {
      mavenBom 'com.lesofn.blog:test-parent:0.0.1'
     }
    }
    //    parent,  maven dependencies   
    dependencies {
     implementation 'com.lesofn.blog:test-parent:0.0.1'
    }
    총화
    위 설정 을 통 해 Gradle 개발 과정 에서 의 대부분의 문 제 를 기본적으로 커버 하 였 으 며,또 무슨 문제 가 있 으 면 댓 글 토론 을 환영 합 니 다.
    이상 은 Gradle 의 기본 사용 에 대한 상세 한 내용 입 니 다.Gradle 사용 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기