springboot用以進行web項目開發的便捷性,本文不再贅述,主要是想將工作中基於springboot與gradle的多模塊項目的構建經驗進行總結與歸納。
1.創建項目
首先安裝java和gradle,本文選用的java版本為1.8.0_40,gradle版本為2.10,安裝過程本文不再贅述。
其次創建項目,名稱為springboot-mm:
mkdir springboot-mm cd springboot-mm gradle init
此時的項目結構如下:
接下來,創建多個模塊,這里以web和modules為例,先創建相關的目錄,
Linux:
mkdir -p web/src/main/{java,resources} web/src/test/{java,resource}mkdir -p modules/src/main/{java,resources} modules/src/test/{java,resource}Windows:
mkdir web/src/main/java,web/src/main/resource,web/src/test/java,web/src/test/resourcemkdir modules/src/main/java,modules/src/main/resource,modules/src/test/java,modules/src/test/resource
此時的目錄結構如下:
2.修改配置
首先修改根目錄下的settings.gradle 文件,引入子模塊:
include 'web','modules'
其次修改根目錄下的build.gradle:
// 所有子項目的通用配置subprojects { apply plugin: 'java' apply plugin: 'idea' version = '1.0.0' // JVM 版本號要求sourceCompatibility = 1.8 targetCompatibility = 1.8 // java編譯的時候缺省狀態下會因為中文字符而失敗[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8' repositories { mavenLocal() maven { url "http://maven.aliyun.com/nexus/content/groups/public" } mavenCentral() jcenter() maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } maven { url 'http://maven.springframework.org/release' } maven { url 'http://maven.springframework.org/milestone' } } jar { manifest { attributes("Implementation-Title": "Gradle") } } // 顯示當前項目下所有用於compile 的jar. task listJars(description: 'Display all compile jars.') << { configurations.compile.each { File file -> println file.name } } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } }}接下來,使用intellij (使用版本為2016.3)導入項目,導入成功後,應該可見如下顯示:
添加web/build.gradle 文件並修改,來定義web模塊的依賴:
buildscript { repositories { mavenLocal() maven { url "http://maven.aliyun.com/nexus/content/groups/public" } maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.5.RELEASE") }}apply plugin: 'org.springframework.boot'archivesBaseName = 'web'ext { springBootVar = '1.4.5.RELEASE'}dependencies { compile project(':modules') // spring boot compile "org.springframework.boot:spring-boot-starter-web:$springBootVar" testCompile "org.springframework.boot:spring-boot-starter-test:$springBootVar"}添加modules/build.gradle 文件,本例中modules是web的依賴模塊,通常可以將類似orm,支付,認證等功能分別放到不同的modules中,這樣可以降低程序的耦合性,便於業務的擴展。讀者可根據自身項目要求,對modules/build.gradle進行修改,但需要在modules/build.gradle,加入以下配置:
bootRepackage { enabled = false}具體原因,請參考,此處。
3.添加測試代碼
添加web/src/main/java/com/formularoom/Application.java,示例代碼如下
@ComponentScan( basePackages = {"com.formularoom"})@EnableAutoConfigurationpublic class Application extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer { public static void main(String args[]) { SpringApplication.run(Application.class, args); } @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(8081); }}添加web/src/main/java/com/formularoom/controller/test1.java,
@Controllerpublic class test1 { @RequestMapping(value = "/test1", method = RequestMethod.GET) @ResponseBody public String test1() { return "spring boot multiple modules test"; }}使用瀏覽器訪問http://127.0.0.1:8081/test1 , 顯示如下:
完整的示例代碼,可從此處獲取。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。