springboot+gradle项目打jar包build.gradle配置

本文介绍如何使用SpringBoot和Gradle配置项目并生成可执行的jar包。包括build.gradle文件的具体设置,如依赖管理和插件应用等,适用于希望快速部署SpringBoot应用的开发者。

springboot+gradle项目打jar包build.gradle配置

废话不多说,直接上代码。
build.gradle里面的配置:

allprojects {
    group 'com.sunvua' //程序所在的根目录
    version '1.0-SNAPSHOT' 
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    }
}
buildscript {
    ext {
        springIOVersion = '1.0.0.RELEASE'
        springBootVersion = '1.5.9.RELEASE'  //springboot版本
    }
    repositories {
        jcenter()
        mavenLocal()
        mavenCentral()
        maven { url "http://repo.spring.io/release" }
        maven { url "http://repo.spring.io/milestone" }
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:${springIOVersion}"
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}" //将依赖导入jar包
   }
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'spring-boot'   //必须加,否则没有打包功能
apply plugin: 'io.spring.dependency-management'

sourceCompatibility = 1.8
targetCompatibility = 1.8

jar { //打包成功后,jar包名为 TestOneGradle-0.0.1.jar
    baseName = 'TestOneGradle' //打成jar包的名字
    version = '0.0.1'
    manifest {
        attributes "Manifest-Version": 1.0,
                'Main-Class': 'com.sunvua.GradleDemoApplication' //主类所在的目录
    }
}

repositories {
    jcenter()
    mavenLocal()
    mavenCentral()
}

dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:Brussels-SR6'
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Brixton.SR4'
    }
}

ext {
    junitVersion = '4.12'
}

dependencies {
    testCompile "junit:junit:${junitVersion}"
    compile('org.springframework.boot:spring-boot-starter-web:1.5.9.RELEASE')
   compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
   //以下引用 为个人所需
    compile('org.springframework.boot:spring-boot-starter-aop:1.5.9.RELEASE')
    compile('org.springframework.boot:spring-boot-starter-cache:1.5.9.RELEASE')
    compile('org.springframework.boot:spring-boot-starter-websocket:1.5.9.RELEASE')
    compile('com.github.pagehelper:pagehelper-spring-boot-starter:1.2.5')
    compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
    compile('mysql:mysql-connector-java:8.0.11')
    }

项目目录结构:
在这里插入图片描述
以上build配置好后,点击idea右上角的gradle
在这里插入图片描述
打包结束后,查看下项目的build目录下是否有jar包:
在这里插入图片描述

进入最后一步,①:windows+r输入cmd点击enter,cd 进入jar包所在的目录
在这里插入图片描述
②: 通过命令行 java -jar 执行jar包,如果出现spring字样,则代表jar包打成功
在这里插入图片描述

FAILURE: Build failed with an exception. 2025-09-01T15:43:10.013+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2025-09-01T15:43:10.013+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong: 2025-09-01T15:43:10.013+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':app:connectedDebugAndroidTest'. 2025-09-01T15:43:10.013+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > There were failing tests. See the report at: file:///E:/OLT/Translate_Auto/app/build/reports/androidTests/connected/index.html 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try: 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Run with --scan to get full insights. 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Get more help at https://help.gradle.org. 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is: 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:connectedDebugAndroidTest'. 2025-09-01T15:43:10.014+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:149)
09-02
<think> 我们面对两个主要问题: 1. java.nio.file.NoSuchFileException: D:\Users\W9027960\.gradle\build-scan-data\3.13.4 (之前的问题) 2. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:connectedDebugAndroidTest' (当前问题) 根据引用内容,尤其是引用[1]和引用[3]中提到的类似构建失败问题,我们可以尝试以下解决方案: 问题1:NoSuchFileException 该问题可能是由于Gradle在尝试创建或访问构建扫描数据目录时失败。我们已经在上一次回答中给出了解决方案(手动创建目录等),这里不再重复。 问题2:TaskExecutionException for connectedDebugAndroidTest 这个任务通常是在连接设备运行Android测试时执行。可能的原因括: - 测试代码本身有错误 - 设备连接问题 - 资源冲突(如引用[1]中提到的多个文件同名冲突) - 文件锁定(如引用[2]中提到的文件被另一个程序使用) - 环境配置问题(如引用[3]中的单元测试环境配置问题) - JDK版本问题(如引用[4]中提到的模块访问权限问题) 解决步骤: 1. 检查测试代码:确保测试代码没有逻辑错误,可以在其他设备上运行。 2. 检查设备连接: - 确保设备已连接且开启USB调试 - 运行`adb devices`确认设备在线 - 重启ADB:`adb kill-server`然后`adb start-server` 3. 处理资源冲突(类似引用[1]): 在`app`模块的`build.gradle`中添加打选项,排除重复文件: ```groovy android { packagingOptions { exclude 'META-INF/**' // 或者更精确地排除冲突文件,如: // exclude 'META-INF/library_release.kotlin_module' } } ``` 4. 解决文件锁定问题(类似引用[2]): - 关闭可能占用构建文件的程序(如IDE、文件资源管理器) - 执行`gradlew --stop`停止所有Gradle守护进程 - 清理项目:`./gradlew clean` 5. 检查环境配置: - 确保单元测试依赖正确(如`androidTestImplementation`) - 检查测试设备的Android版本是否符合要求 6. 处理JDK模块访问问题(类似引用[4]): 在`gradle.properties`中添加: ``` org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED ``` 7. 更新Gradle和Android插件版本: 在项目根目录的`build.gradle`中: ```groovy dependencies { classpath 'com.android.tools.build:gradle:7.0.0' // 或更高稳定版 } ``` 同时修改`gradle-wrapper.properties`中的Gradle版本: ``` distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip ``` 8. 查看详细日志: 运行任务时添加`--stacktrace`和`--info`参数: ```bash ./gradlew :app:connectedDebugAndroidTest --stacktrace --info ``` 9. 清除Gradle缓存: 删除项目中的`.gradle`目录和`build`目录,然后重新同步。 10. 检查测试设备的可用性: 确保测试设备(模拟器或真机)的Android系统版本与项目的`targetSdkVersion`兼容。 如果上述步骤仍无法解决,请提供更详细的错误日志(特别是`--stacktrace`的输出)。 注意事项: - 由于错误信息可能涉及多个模块,需要逐一排查。 - 确保所有依赖库的版本兼容。 根据错误类型,可能还需要检查测试资源的正确性(如AndroidManifest.xml中是否声明了必要的权限)。 相关问题: 1. 如何解决Android测试中的重复文件冲突? 2. 如何更新Gradle版本以修复构建错误? 3. 如何配置Gradle以解决JDK模块访问问题? 4. 如何分析`connectedDebugAndroidTest`任务的详细失败原因? </think> 以下是解决**Gradle构建时`org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:connectedDebugAndroidTest'`和`java.nio.file.NoSuchFileException`错误**的完整方案: --- ### 一、问题根源分析 1. **`NoSuchFileException`** Gradle无法访问`build-scan-data`目录,通常由: - 目录权限不足或路径错误(Windows权限限制) - 网络中断导致依赖下载不完整[^1][^3] - 缓存文件损坏(如引用[1]的`transforms-2`缓存问题) 2. **`TaskExecutionException`** Android测试任务失败常见原因: - 资源文件冲突(如引用[1]的`META-INF`重复文件) - 文件锁定(如引用[2]的`R.jar`被占用) - JDK模块访问限制(如引用[4]的`java.base`权限问题) - Gradle版本与插件不兼容 --- ### 二、解决步骤 #### 阶段1:修复文件系统问题 ```mermaid graph TD A[检查目录权限] --> B{目录是否存在?} B -->|否| C[手动创建目录] B -->|是| D[检查写权限] C --> E[执行验证命令] D --> E E[验证] --> F[清除缓存] ``` 1. **手动创建缺失目录**(解决`NoSuchFileException`) ```powershell mkdir "D:\Users\W9027960\.gradle\build-scan-data\3.13.4" icacls "D:\Users\W9027960\.gradle" /grant Everyone:(OI)(CI)F # 赋权 ``` 2. **清除Gradle缓存**(解决文件冲突) ```bash ./gradlew cleanBuildCache # 清除构建缓存 rm -rf ~/.gradle/caches/transforms-2 # 删除问题缓存(引用[1]) ``` #### 阶段2:解决测试任务失败 **在`app/build.gradle`中添加配置:** ```groovy android { packagingOptions { // 解决重复文件冲突(引用[1]) exclude 'META-INF/library_release.kotlin_module' pickFirst '**/R.class' // 解决R.jar锁定(引用[2]) } testOptions { // 防止文件锁定 execution 'ANDROIDX_TEST_ORCHESTRATOR' } } ``` **在`gradle.properties`中添加:** ```properties # 解决JDK模块访问问题(引用[4]) org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED ``` #### 阶段3:环境修复 1. **终止占用进程**(解决文件锁定): ```powershell taskkill /F /IM java.exe # 结束所有Java进程 del /F /Q .android\Flutter\build\**\R.jar # 删除被锁文件(引用[2]) ``` 2. **更新Gradle配置**: ```properties # gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip ``` ```groovy // build.gradle dependencies { classpath 'com.android.tools.build:gradle:7.2.1' # 兼容Gradle 7.x } ``` --- ### 三、验证与测试 1. 重新构建: ```bash ./gradlew clean && ./gradlew :app:connectedDebugAndroidTest --stacktrace ``` 2. 关键检查点: - 控制台无`FileSystemException`或`META-INF`冲突警告 - `build/reports/androidTests/`生成测试报告 --- ### 四、预防措施 1. **定期清理缓存**: ```bash # Windows计划任务每月执行 taskkill /F /IM java.exe & rd /s /q %USERPROFILE%\.gradle\caches ``` 2. **避免文件锁定**: - 关闭IDE后再执行Clean操作 - 使用`gradlew --stop`终止守护进程 --- ### 相关问题 1. 如何解决Android测试中的`META-INF`文件冲突? 2. 如何配置Gradle以兼容JDK17的模块系统? 3. 什么是AndroidX Test Orchestrator?它如何解决测试稳定性问题? 4. 如何自动清理Gradle缓存以避免构建失败?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值