Gradle 다 중 모듈 프로젝트 구축 방법 절차
Gradle 프로젝트 도 하나의 구성 요소 보다 많 습 니 다.다 중 프로젝트 구축(multi-procject build)이 라 고도 부 릅 니 다.
우 리 는 먼저 여러 항목 의 구축 을 만 듭 니 다.
mkdir cmdGradleProj && cd cmdGradleProj
gradle init
이때D:\cmdGradleProj>디 렉 터 리 에서 실행:
tree /f
의 항목 구 조 는 다음 과 같다.
│ build.gradle
│ gradlew
│ gradlew.bat
│ settings.gradle
│
├─.gradle
│ └─3.0
│ └─taskArtifacts
│ cache.properties
│ cache.properties.lock
│ fileHashes.bin
│ fileSnapshots.bin
│ fileSnapshotsToTreeSnapshotsIndex.bin
│ taskArtifacts.bin
│
└─gradle
└─wrapper
gradle-wrapper.jar
gradle-wrapper.properties
그리고 여러 모듈 을 만 듭 니 다.코어 와 웹 모듈 을 예 로 들 면 네 개의 디 렉 터 리 를 만 듭 니 다.(test 폴 더 는 테스트 클래스 를 만 드 는 데 사 용 됩 니 다.)
mkdir core\src\main\java
mkdir core\src\main\test
mkdir web\src\main\java
mkdir web\src\main\resources
core 모듈:프로그램의 다른 모듈 에서 사용 할 수 있 는 일반적인 구성 요 소 를 포함 합 니 다.예 를 들 어 메시지 서비스 클래스 는'Hello World!'로 돌아 갑 니 다.문자열이 모듈 은 두 가지 의존 도가 있 습 니 다:Junit 4.11 과 comons-lang 3.웹 모듈:모듈 은 HelloWorld 클래스 를 포함 하고 프로그램의 시작 입 니 다.MessageService 대상 에서 정 보 를 얻 고 받 은 정 보 를 로그 파일 에 기록 합 니 다.이 모듈 은 두 개의 의존 도 를 가지 고 있 습 니 다.core 모듈 이 필요 하고 Log4j 를 로그 로 사용 합 니 다.
현재 필요 한 디 렉 터 리 를 만 들 었 습 니 다.다음 단 계 는 Gradle 구축 을 설정 하 는 것 입 니 다.먼저 여러 프로젝트 구축 에 포 함 된 프로젝트 를 설정 합 니 다.
저 희 는 다음 절 차 를 통 해 여러 프로젝트 구축 에 포 함 된 프로젝트 를 설정 할 수 있 습 니 다.
1.루트 프로젝트 의 루트 디 렉 터 리 에 settings.gradle 파일 을 만 듭 니 다.여러 프로젝트 Gradle 구축 은 이 파일 을 포함 해 야 합 니 다.여러 프로젝트 구축 에 포 함 된 프로젝트 를 가리 키 기 때 문 입 니 다.
2.웹 과 core 프로젝트 가 우리 의 다 중 프로젝트 구축 에 포함 되 는 지 확인 합 니 다.
우리 의 settings.gradle 파일 은 다음 과 같 습 니 다.
include 'core'
include 'web'
약자:include'core','web'
루트 디 렉 터 리 의 build.gradle 수정:
//
subprojects {
apply plugin: 'java'
// apply plugin: 'eclipse'
apply plugin: 'idea'
version = '1.0'
// JVM
sourceCompatibility = 1.8
targetCompatibility = 1.8
// java
[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'
//
ext {
springVersion = '4.3.3.RELEASE'
hibernateVersion='5.2.2.Final'
}
repositories {
mavenCentral()
}
jar {
manifest {
attributes("Implementation-Title": "Gradle")
}
}
configurations {
//
all*.exclude group: 'commons-httpclient'
all*.exclude group: 'commons-logging'
all*.exclude group: 'commons-beanutils', module: 'commons-beanutils'
}
dependencies {
//
compile(
"org.springframework:spring-context:$springVersion",
"org.springframework:spring-orm:$springVersion",
"org.springframework:spring-tx:$springVersion",
"org.springframework.data:spring-data-jpa:1.10.3.RELEASE",
"org.hibernate:hibernate-entitymanager:$hibernateVersion",
"c3p0:c3p0:0.9.1.2",
"mysql:mysql-connector-java:6.0.4",
"org.slf4j:slf4j-nop:1.7.21",
"commons-fileupload:commons-fileupload:1.3.2",
"com.fasterxml.jackson.core:jackson-databind:2.8.2"
)
// maven jar
ext.jarTree = fileTree(dir: 'libs', include: '**/*.jar')
ext.rootProjectLibs = new File(rootProject.rootDir, 'libs').getAbsolutePath()
ext.jarTree += fileTree(dir: rootProjectLibs, include: '**/*.jar')
compile jarTree
//
testCompile(
"org.springframework:spring-test:$springVersion",
"junit:junit:4.12"
)
}
// compile jar.
task listJars(description: 'Display all compile jars.') << {
configurations.compile.each { File file -> println file.name }
}
}
다음은 core/build.gradle 을 수정 하여 core 모듈 의 의존 도 를 정의 할 수 있 습 니 다.
// jar
archivesBaseName = 'core'
// ,
web core , web/build.gradle :
apply plugin:"war"
dependencies{
// core
compile project(":core")
compile(
"org.springframework:spring-webmvc:$springVersion",
"org.apache.taglibs:taglibs-standard-impl:1.2.1"
)
//
providedCompile(
"javax.servlet:javax.servlet-api:3.1.0",
"javax.servlet.jsp:jsp-api:2.2.1-b03",
"javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1"
)
}
task jarWithoutResources(type: Jar) {
baseName project.name
from("$buildDir/classes/main")
}
war{
dependsOn jarWithoutResources
from("$projectDir/src/main/resources") {
include "*.properties"
into("WEB-INF/classes")
}
classpath=classpath - sourceSets.main.output
classpath fileTree(dir:libsDir, include:"${project.name}-${version}.jar")
}
task('jarPath')<<{
configurations.runtime.resolve().each {
print it.toString()+";"
}
println();
}
3.프로젝트 컴 파일모든 jar 보기:
> gradle listJars
// :
> gradle :core:dependencies
> gradle :web:dependencies
// :
> gradle build
비교 해 보면 이때 의 목록 은 다음 과 같다.
│ build.gradle
│ gradlew
│ gradlew.bat
│ settings.gradle
│
├───.gradle
│ └───3.0
│ └───taskArtifacts
│ cache.properties
│ cache.properties.lock
│ fileHashes.bin
│ fileSnapshots.bin
│ fileSnapshotsToTreeSnapshotsIndex.bin
│ taskArtifacts.bin
│
├───core
│ │ build.gradle
│ │
│ ├───build
│ │ ├───libs
│ │ │ core-1.0.jar
│ │ │
│ │ └───tmp
│ │ └───jar
│ │ MANIFEST.MF
│ │
│ └───src
│ ├───main
│ │ └───java
│ └───test
│ └───java
├───gradle
│ └───wrapper
│ gradle-wrapper.jar
│ gradle-wrapper.properties
│
└───web
│ build.gradle
│
├───build
│ ├───libs
│ │ web-1.0.jar
│ │ web-1.0.war
│ │
│ └───tmp
│ ├───jarWithoutResources
│ │ MANIFEST.MF
│ │
│ └───war
│ MANIFEST.MF
│
└───src
└───main
├───java
└───resources
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin ReflectionReflection is a set of language and library features that allows for introspecting the structure of your own program at ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.