多模块Java项目包装方案1. 项目概述
本项目是一个多模块Java应用程序,旨在提供一个完整的解决方案来显示如何使用Gradle构建和包装多模块Java项目。该项目分为三个模块:核心模块、Web模块和测试模块。核心模块提供实现核心功能,Web模块提供单元测试和集成测试的Web界面。
2. 项目结构项目目录结构如下:
- project - core - src/main/java - src/main/resources - build.gradle - web - src/main/java - src/main/resources - build.gradle - test - src/test/java - build.gradle - build.gradle
其中,project
为项目根目录,core
、web
和test
对于每个模块的子目录。
构建核心模块的脚本 build.gradle
如下:
apply plugin: 'java-library'dependencies { // 增加对核心模块的依赖 implementation 'com.example:core-library:1.0.0'}// jar的包装配置 { manifest { // 设置主类 attributes 'Main-Class': 'com.example.core.Main' }}
在构建核心模块的脚本中,我们声明了Java库插件,并增加了依赖性。此外,我们还分配了包装任务,并指定了主要类别。
3.2 构建Web模块的脚本构建Web模块的脚本 build.gradle
如下:
apply plugin: 'java'apply plugin: 'war'dependencies { // 添加Web模块的依赖 implementation 'com.example:core-library:1.0.0' implementation 'javax.servlet:jstl:1.2' providedCompile 'javax.servlet:javax.servlet-api:4.0.1'}// War包装配置 { // 设置输出文件名 archiveName 'webapp.war' // 设置Web资源目录 webAppDirName 'src/main/webapp' // 设置Web应用程序部署路径 destinationDir file('deploy') // 设置Web应用部署文件名称 rootSpec.exclude('deploy/webapp.war')}
在Web模块的构建脚本中,我们应用了Java和War插件,增加了核心模块和一些Web相关的依赖关系。我们还分配了输出文件名、Web资源目录、Web应用程序部署路径和Web应用程序部署文件名。
3.3 构建脚本的测试模块构建脚本的测试模块 build.gradle
如下:
apply plugin: 'java'dependencies { // 添加对测试模块的依赖 testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:3.12.4' testImplementation 'org.springframework.boot:spring-boot-starter-test:2.4.5'}// jar的包装配置 { // 设置输出文件名 archiveName 'test.jar' // 设置主类 manifest { attributes 'Main-Class': 'com.example.test.Main' }}
Java插件应用于测试模块的构建脚本,并添加了一些与测试相关的依赖。我们还配备了包装任务,指定了输出文件名称和主要类别。
3.4 项目根目录的构建脚本项目根目录的构建脚本 build.gradle
如下:
subprojects { apply plugin: 'java' apply plugin: 'maven' repositories { // 设置远程仓库 mavenCentral() } dependencies { // 添加通用依赖 compileOnly 'org.projectlombok:lombok:1.18.20' annotationProcessor 'org.projectlombok:lombok:1.18.20' } // 构建配置 sourceCompatibility = 1.8 targetCompatibility = 1.8 // Maven配置 group = 'com.example'