当前位置: 首页 > 图灵资讯 > 技术篇> 多模块java怎么打包

多模块java怎么打包

来源:图灵教育
时间:2023-11-02 17:49:21

多模块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为项目根目录,corewebtest对于每个模块的子目录。

3. Gradle构建脚本3.1 构建核心模块的脚本

构建核心模块的脚本 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'