使用Gradle自定义配置构建Java程序
来源:互联网 发布:防范电信网络诈骗知识 编辑:程序博客网 时间:2024/05/29 02:07
自定义源代码路径、编译输出路径
某些情况下默认的源代码路径等可能不符合我们项目的结构,这时除了修改项目结构外,我们还可以自定义源代码路径等配置。
build.gradle
//使用 Java 插件//默认在 src/main/java下查找源代码apply plugin: 'java'//定义项目的版本version = 0.1//设置 Java 兼容版本sourceCompatibility = 1.8//jar 包相关配置jar { //清单文件配置 manifest { //启动类 attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp' }}//改变项目默认结构sourceSets { //设置源代码所在目录 main { java { srcDirs = ['src'] } } //设置测试代码所在目录 test { java { srcDirs = ['test'] } }}//改变编译目录buildDir = 'out'
我们将源代码从默认配置的路径转移到 src 下,然后进行编译(gradle build)
│ build.gradle│ 使用Gradle自定义配置构建Java程序.md│├─.gradle│ ├─3.4│ │ ├─file-changes│ │ │ last-build.bin│ │ ││ │ ├─fileContent│ │ │ fileContent.lock│ │ ││ │ └─taskHistory│ │ fileHashes.bin│ │ fileSnapshots.bin│ │ taskHistory.bin│ │ taskHistory.lock│ ││ └─buildOutputCleanup│ built.bin│ cache.properties│ cache.properties.lock│├─out│ ├─classes│ │ └─main│ │ └─com│ │ └─manning│ │ └─gia│ │ └─todo│ │ │ ToDoApp.class│ │ ││ │ ├─model│ │ │ ToDoItem.class│ │ ││ │ ├─repository│ │ │ InMemoryToDoRepository.class│ │ │ ToDoRepository.class│ │ ││ │ └─utils│ │ CommandLineInput.class│ │ CommandLineInputHandler$1.class│ │ CommandLineInputHandler.class│ ││ ├─libs│ │ 使用Gradle自定义配置构建Java程序-0.1.jar│ ││ └─tmp│ ├─compileJava│ └─jar│ MANIFEST.MF│└─src └─com └─manning └─gia └─todo │ ToDoApp.java │ ├─model │ ToDoItem.java │ ├─repository │ InMemoryToDoRepository.java │ ToDoRepository.java │ └─utils CommandLineInput.java CommandLineInputHandler.java
此时我们可以看到,编译输出目录变更为 out ,并且正常编译,且可以执行相关程序。
配置和使用外部依赖
下面我们使用 Apache Commons Lang 库来替换我们的代码(这部分内容不涉及到gradle,故不详细阐述)
很显然,我们引入了第三方库,需要告知 Gradle 否则编译是不能通过的,会被以下错误:
www.coderknock.com$ gradle build:compileJavaD:\Windows\Desktop\LearnGradle\使用Gradle自定义配置构建Java程序\src\com\manning\gia\todo\ToDoApp.java:5: 错误: 程序包org.apache.commons.lang3不存在import org.apache.commons.lang3.CharUtils; ^D:\Windows\Desktop\LearnGradle\使用Gradle自定义配置构建Java程序\src\com\manning\gia\todo\ToDoApp.java:17: 错误: 找不到符号 command = CharUtils.toChar(input, DEFAULT_INPUT); ^ 符号: 变量 CharUtils 位置: 类 ToDoApp2 个错误:compileJava FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':compileJava'.> Compilation failed; see the compiler error output for details.* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.BUILD FAILEDTotal time: 1.517 secs
我们可以使用 Gradle 的依赖来实现。
在 build.gradle 添加
//定义仓库,此处使用的是 Maven 的仓库//可以在 http://mvnrepository.com/ 或者 http://search.maven.org 【可能需要翻墙】 来查询相关依赖repositories { mavenCentral()}/** 定义依赖相当于maven中的 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.5</version> </dependency> </dependencies> */dependencies { //group对应 groupId name 对应 artifactId compile指定的是依赖使用的范围 compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.5'}
再次进行编译
www.coderknock.com$ gradle build//解析依赖,如果依赖不存在,则会在使用到该依赖时下载该依赖【再次构建时就不会下载了,除非手动删除了下载的依赖或者更新了依赖的版本】> Configuring > 0/1 projects > root project > Compiling D:\Windows\Desktop\LearnGradle\使用Gradle自定义配置构建Java程序\:compileJava//此处就是从Maven中央库下载相关依赖Download https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.pomDownload https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:processResources NO-SOURCE:classes:jar UP-TO-DATE:assemble UP-TO-DATE:compileTestJava NO-SOURCE:processTestResources NO-SOURCE:testClasses UP-TO-DATE:test NO-SOURCE:check UP-TO-DATE:build UP-TO-DATEBUILD SUCCESSFULTotal time: 40.259 secs
此时就可以正常编译及运行程序了。
相关代码
0 0
- 使用Gradle自定义配置构建Java程序
- 使用Gradle自定义配置构建Web应用
- 第一次使用Gradle构建Java程序
- 使用Gradle构建Android项目的一些自定义配置
- 使用Gradle构建Android程序
- 使用Gradle构建Android程序
- 使用gradle构建java项目
- 使用Gradle构建Java项目
- 使用Gradle构建Java项目
- 使用Gradle构建Java项目
- 使用Gradle构建Java项目
- 使用Gradle构建Java项目
- 使用gradle构建java项目
- 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置
- Gradle学习-构建Java程序一
- springboot log4j2配置,使用gradle构建
- Android使用Gradle配置构建变体
- Gradle 自定义构建全局变量
- 模仿Wireshark网络抓包工具实现---c++
- 论文笔记:A clockwork RNN
- cocos2dx jni闪退的BUG
- linux学习(2)基本开发流程
- WPF样式
- 使用Gradle自定义配置构建Java程序
- Spark第二代Tungsten引擎测试数据和引擎实现内幕
- 高性能服务器架构思路(一)——缓冲策略
- Oracle游标遍历
- PAT-B 1023. 组个最小数 (20)
- 讲讲如何将图片格式转化成base64格式的
- Java实例-输入学生成绩,计算出平均分,并判断及格人数和不及格人数
- ssm+maven+mysql搭建工程
- jquery DOM节点删除之empty()的基本用法