gradle多模組開發
參考文件:gradle的官方userguide.pdf文件的chapter 55和chapter 56.
gradle的多模組或專案開發一定不會比maven差,在我看來!大的專案分成多個模組來開發是常事.下文就介紹一下怎麼用gradle開發多模組專案.對於gradle,在Eclipse和IDEA開者之間,毫無疑問選擇IDEA作為IDE.
testweb是一個簡單例子,專案只分成了core和web兩個模組.其中core模組是放一些基本的或公共的java類,web模組放的是web Controller,配置,頁面.所以最終打包專案時,core應打成一個jar包,而web模組引用(依賴)core模組,對於web的java類也打起一個jar包,這兩個jar包最後是放在lib包下面再打成war包.專案的主要結構如下:
testweb
core
src
main
java
test
java
resources
build.gradle
web
src
main
java
resources
test
java
build.gradle
build.gradle
settings.gradle
core主要使用spring+spring data jpa(hibernate實現)+mysql
一.根據上面的專案結構,新建必要的目錄和檔案.
1.settings.gradle.只有一個模組來說,此檔案是可選的.對於多模組,此檔案是必須的.
2.這裡將core和web模組的gradle配置也放到了頂層的build.gradle
此專案包括core和web兩個模組,其中core為普通java模組,web為web模組,並且web依賴core.
a.打包web時,會先將web\src\main\resources下的檔案複製到web\build\resources\main目錄,然後複製web\src\main\product下的檔案到web\build\resources\main目錄來覆蓋同名檔案.
b.編譯web\src\main\java下的java檔案到web\build\classes\main目錄,然後將web\build\classes\main的檔案打成jar包.
c.將所需依賴,包括core-${version}.jar和web-${version}.jar複製到war包下的\WEB-INF\lib目錄.將web\src\main\product下的檔案複製到WEB-INF\classes目錄
三.測試.
1.先測試core模組.主要參考core\src\test\java\com\exam\repository\UserRepositoryTest.java.
2.再測試web模組.
a.先用junit測試controller.主要參考web\src\test\java\com\exam\web\UserControllerTest.java,
b.參考<<配置簡單的嵌入式jetty>>測試(可選)
c.打再成war包,部署到tomcat或jetty測試.
原始碼:http://download.csdn.net/detail/xiejx618/7736387
gradle的多模組或專案開發一定不會比maven差,在我看來!大的專案分成多個模組來開發是常事.下文就介紹一下怎麼用gradle開發多模組專案.對於gradle,在Eclipse和IDEA開者之間,毫無疑問選擇IDEA作為IDE.
testweb是一個簡單例子,專案只分成了core和web兩個模組.其中core模組是放一些基本的或公共的java類,web模組放的是web Controller,配置,頁面.所以最終打包專案時,core應打成一個jar包,而web模組引用(依賴)core模組,對於web的java類也打起一個jar包,這兩個jar包最後是放在lib包下面再打成war包.專案的主要結構如下:
testweb
core
src
main
java
test
java
resources
build.gradle
web
src
main
java
resources
test
java
build.gradle
build.gradle
settings.gradle
core主要使用spring+spring data jpa(hibernate實現)+mysql
一.根據上面的專案結構,新建必要的目錄和檔案.
1.settings.gradle.只有一個模組來說,此檔案是可選的.對於多模組,此檔案是必須的.
include 'core','web'
2.這裡將core和web模組的gradle配置也放到了頂層的build.gradle
build.gradle
allprojects {
apply plugin: 'java'
group = 'org.exam'
version = '1.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
subprojects {
ext {
slf4jVersion = '1.7.7'
springVersion = '4.2.1.RELEASE'
hibernateVersion = '4.3.1.Final'
}
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
repositories {
mavenCentral()
}
configurations {
//compile.exclude module: 'commons-logging'
all*.exclude module: 'commons-logging'
}
dependencies {
compile(
"org.slf4j:jcl-over-slf4j:${slf4jVersion}",
"org.slf4j:slf4j-log4j12:${slf4jVersion}",
"org.springframework:spring-context:$springVersion",
"org.springframework:spring-orm:$springVersion",
"org.springframework:spring-tx:$springVersion",
"org.springframework.data:spring-data-jpa:1.5.2.RELEASE",
"org.hibernate:hibernate-entitymanager:$hibernateVersion",
"c3p0:c3p0:0.9.1.2",
"mysql:mysql-connector-java:5.1.26",
"commons-fileupload:commons-fileupload:1.3.1",
"com.fasterxml.jackson.core:jackson-databind:2.3.1"
)
testCompile(
"org.springframework:spring-test:$springVersion",
"junit:junit:4.11"
)
}
}
project(':core') {
}
project(':web') {
apply plugin: "war"
dependencies {
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"
)
}
processResources{
/* 從'$projectDir/src/main/product'目錄下複製檔案到'WEB-INF/classes'目錄下覆蓋原有同名檔案*/
from("$projectDir/src/main/product")
}
/*自定義任務用於將當前子專案的java類打成jar包,此jar包不包含resources下的檔案*/
def jarArchiveName="${project.name}-${version}.jar"
task jarWithoutResources(type: Jar) {
from sourceSets.main.output.classesDir
archiveName jarArchiveName
}
/*重寫war任務:*/
war {
dependsOn jarWithoutResources
/* classpath排除sourceSets.main.output.classesDir目錄,加入jarWithoutResources打出來的jar包 */
classpath = classpath.minus(files(sourceSets.main.output.classesDir)).plus(files("$buildDir/$libsDirName/$jarArchiveName"))
}
/*列印編譯執行類路徑*/
task jarPath << {
println configurations.compile.asPath
}
}
/*從子專案拷貝War任務生成的壓縮包到根專案的build/explodedDist目錄*/
task explodedDist(type: Copy) {
into "$buildDir/explodedDist"
subprojects {
from tasks.withType(War)
}
}
此專案包括core和web兩個模組,其中core為普通java模組,web為web模組,並且web依賴core.
a.打包web時,會先將web\src\main\resources下的檔案複製到web\build\resources\main目錄,然後複製web\src\main\product下的檔案到web\build\resources\main目錄來覆蓋同名檔案.
b.編譯web\src\main\java下的java檔案到web\build\classes\main目錄,然後將web\build\classes\main的檔案打成jar包.
c.將所需依賴,包括core-${version}.jar和web-${version}.jar複製到war包下的\WEB-INF\lib目錄.將web\src\main\product下的檔案複製到WEB-INF\classes目錄
三.測試.
1.先測試core模組.主要參考core\src\test\java\com\exam\repository\UserRepositoryTest.java.
2.再測試web模組.
a.先用junit測試controller.主要參考web\src\test\java\com\exam\web\UserControllerTest.java,
b.參考<<配置簡單的嵌入式jetty>>測試(可選)
c.打再成war包,部署到tomcat或jetty測試.
原始碼:http://download.csdn.net/detail/xiejx618/7736387
相關文章
- Gradle建立多模組專案Gradle
- Yaf多模組開發
- struts多模組開發
- Gradle構建多模組專案Gradle
- Gradle構建多模組專案(轉)Gradle
- Chapter5:使用Gradle管理多模組構建APTGradle
- [Gradle中文教程系列]-跟我學Gradle-8.7.多模組專案之 - spring boot + gradle + 構建公共jsp頁面的多模組專案GradleSpring BootJS
- 藉助Gradle Plugin解決模組化開發中模組如何對外暴露介面GradlePlugin
- struts2:多模組多配置檔案開發
- 使用Gradle構建多模組SpringBoot專案GradleSpring Boot
- Gradle for Android 第五篇( 多模組構建 )GradleAndroid
- laravel 多模組模式下進行開發Laravel模式
- [Gradle中文教程系列]-跟我學Gradle-8.2-多模組專案- 專案結構Gradle
- Go 1.18 新特性多模組工作區教程-讓多模組開發變得簡單Go
- [提問交流]onethink進行多模組開發
- Java技術分享:SpringBoot多模組開發JavaSpring Boot
- Android與Gradle(一):Gradle外掛開發AndroidGradle
- 使用 Gradle 實現一套程式碼開發多個應用Gradle
- Spring Boot + Maven 多模組專案開發詳解Spring BootMaven
- 【Java】【Gradle】Gradle構建SpringBoot專案,Gradle模組化管理JavaGradleSpring Boot
- 使用 Java 開發 Gradle 外掛JavaGradle
- nginx模組開發Nginx
- 利用IDEA建立gradle構建的Java多模組專案(太清晰了)IdeaGradleJava
- 【Java】【專案構建】Idea中設定Gradle/Maven多模組依賴JavaIdeaGradleMaven
- Gradle入門系列(五)——Gradle其它模組與Plugin外掛GradlePlugin
- 模組化開發(二)
- 前端模組化開發前端
- Xposed模組的開發
- Laravel 模組化開發Laravel
- Gradle模組化配置及多渠道打包Gradle
- 從頭開始開發一個 Gradle 外掛Gradle
- 使用typescript開發angular模組(編寫模組)TypeScriptAngular
- Andorid Studio NDK 開發 – NDK 開發利器 gradle-experimentalGradle
- Andorid Studio NDK 開發 - NDK 開發利器 gradle-experimentalGradle
- Android開發:build.gradle 配置指南AndroidUIGradle
- Spring Boot開發(Gradle+註解)Spring BootGradle
- Flutter外掛開發《iOS原生模組開發》FlutteriOS
- 淺談模組化開發