Gradle & Maven (작성중)
여태까지 IDE를 Eclipse로 써왔는데 빌드라는 걸 몰라도 문제가 없었기 때문에 아무 걱정 없었다.
회사에 들어와보니 Gradle이라는 빌드툴이라는 것을 사용하고 있었고 난 이거를 익혀야만 하게 되었다.
"대체 왜!? Gradle을 써야돼!?" 라는 생각이 들어서 빌드툴 이런 게 왜 필요하냐고 회사 선배께 물으니...
하지만, 회사에서 IDE는 IntelliJ 그리고 Build Tool은 Gradle을 사용한다고 하니 따라가기로 했다라기 보다는 따라가야 했다.
"빌드는 왜!? 뭘!? 하는 걸까?" 어디에도 명확하게 안 써있다.
//////////////////////////////////////////////////
///// Gradle - Java JVM 기반, 오픈 소스 빌드 도구
//////////////////////////////////////////////////
///////////////////////// 기본
///// 참조
http://gmind.tistory.com/entry/Gradle을-써야-하는-이유
http://horajjan.blog.me/220411321179
http://kwon37xi.egloos.com/4747016
http://kwonnam.pe.kr/wiki/gradle
★ http://dynaticy.tistory.com/entry/Gradle-UserGuide-도전기-1-개요
★ http://knoc720.blogspot.kr/2015/02/maven-gradle.html
///// 설치
Download : http://gradle.org/
환경변수 Path설정 : ./bin/gralde 또는 ./bin/gradle.bat
확인 : gralde -version
///// 파일구성
build.gradle - 프로젝트의 루트와 각 모듈의 루트마다 존재
setting.gradle
///// 라이브러리 로컬저장소 비교
- Maven : .m2/repository
- Gradle : .gradle/caches/module-2/files-2.1
///// Groovy 언어
참조 : http://forgiveall.tistory.com/155
///////////////////////// 정보 긁어모으자(작성중)
///// gradle.properties 파일 - 자동으로 import 됨.
///// build.gradle 파일 - 빌드 기능 정의
///// settings.gradle 파일 - 싱글 or 멀티프로젝트 구성 정의
/////
// buildscript{} - 빌드 기능 이외, 직접 만든 plugin 기능이나 외부 기능 추가 정의
// apply plugin - plugin 선언
// subproject{} -
// allproject{} - 전체프로젝트에 공통으로 설정할 스크립트
// repositories{} - dependencies 라이브러리 파일을 운영하는 사이트 주소 선언
// dependencies{} - 프로젝트에서 사용할 라이브러리 선언
///// Gradle로 Maven의 pom.xml 만들기
- build.gradle파일에 다음 플러그인을 추가
apply plugin: ‘maven’
- 터미널에서 다음 명령으로 task가 추가되었는지 확인
> gradle tasks
- 메이븐 pom.xml 파일 만들기 task 실행
> gradle writeNewPom
// mavenCentral()를 사용하여 기본 Maven repositories를 명시하는 법
repositories {
mavenCentral()
}
// maven repository를 remote하는 법
repositories {
maven{
url "http://repo.mycompany.com/maven2"
}
}
// ivy repository를 remote하는 법
repositories{
ivy {
url "http://repo.mycompany.com/maven2"
}
}
// 로컬 저장소 참조
repositories{
ivy {
url "../local-repo"
}
}
// 사용자 정의 repository에 접속 계쩡정보를 추가 할 경우의 방법
repositories{
maven {
credentials{
username 'user'
password 'password'
}
url "http://repo.mycompany.com/maven2"
}
}
compile
runtime
testCompile
testRuntime
///// 구성하기
// configurations
configurations{
compile {
description = 'compile classpath'
transitive = true
}
runtime {
extendsFrom compile
}
}
configurations.compile {
description = 'compile classpath'
}
// dependencies
// 맵지정방식
dependencies {
compile group: 'org.hibernate', name: 'hjibernate-core', version: '3.6.7.Final'
}
// 맵지정방식
dependencies {
compile 'org.hibernate:hibernate-core:3.6.7.Final'
}
//
apply
dependencies{}
//////////////////////////////////////////////////
///// maven
//////////////////////////////////////////////////
///// lifecycle
// default lifecycle
// clean lifecycle
// site lifecycle
///// profile
///// POM (Project Object Model)
<artifactId>
<groupId>
<version>
<name>
<packaging>
<distributionManagement>
<parent>
<version>
<scm>
<dependencyManagement>
<dependencies>
///// CoC (Convention over Configuration)
Maven - 선언적, 관습과 설정
Ant - 명령적, 설정과 스크립트 작성
Gradle -