时至今日,如果你的Java项目依然需要启动一个特定的工具,比如IDE,才能编译部署,那你的项目不在本文的讨论之中,因为实在落后得太让人无语了。
好,回归正题。旧时代的Java世界,构建工具等同于两个词Ant和Maven。
Ant源自Make,同JUnit一样,它也是一个航班产物(参见《Ant权威指南》 序)。不过,Make的基础注定了它的起点不高,所有一切都要手工打造。我还依稀记得曾几何时,每每开始一个项目都要重新复制一份Ant脚本,修修改改。 Maven给了人们新的希望,目录结构的约定、依赖管理、IDE集成,那时看来,几近完美。是的,几近,还差了那么一点点。就是那么一点点,却是致命伤。
只要一个项目进行一段时间,一个必然遇到的问题就是,编写新的自动化脚本。因为每个项目都有自己的特定需求,标准做法必然是无法满足的。扩展 Maven对任何新手都是一件头疼的事,我们要学会编写插件,要搞清楚生命周期,这时,突然会唤起一丝丝对于ANT的怀念,虽然它做简单事不容易,但做复 杂事却也没这么困难。
如果那些日子,我们不得不忍受Ant和Maven的不完美,那现在,是时候抛弃它们了。新时代Java构建有两个很好的候选:Gradle和Buildr。在我看来,它们真正比Maven更强大的地方,编写自己的任务更加容易。更值得兴奋的一点是,我们终于可以抛弃冗长的XML,选择一种更优雅的程序设计语言来写代码了,这几乎意味着你可以做到想做的一切。
Buildr是Apache出品的构建工具,它以Ruby作为构建脚本。我曾在InfoQ发表过一篇很长的文章《软件开发地基》,讨论软件项目应该具备一些基础构建项,就是以Buildr为基础的。有兴趣的话,可以参考一下。这里就不再赘述。顺便说一下,那篇文章里的内容,除了某些写法现在需要做一些微调,大部分内容依然是适用于大多数Java项目。
Gradle现在是整个Java社区的构建新宠,它采用Groovy作为自己的构建语言。如果你知道,Groovy是一门诞生自JVM平台的语言,这就决定了它要比其它移植到JVM上的语言能更好的适应JVM平台,它可以采用更符合Java世界的方式无缝地整合Java既有的程序库,而不必像移植语言那样削足适履。
初涉Gradle,最让人吃惊的一点莫过于它详尽的文档,涵盖了Gradle使用的方方面面,这是许多开源软件项目无法媲美,即便早在它的1.0版本尚未发布之时。当然,能做到这一点是因为它背后有一个公司在支撑:GradleWare,这意味着如果你需要商业支持,也是可以的。
Gradle 1.0尚未发布之,它就捧回2010年的Spring大奖和入围了2011年的JAX大奖。如果你还需要更多的信心,作为Java开发人员,你不可能不知道Spring,那Spring转投Gradle怀抱,应该是对Gradle最有利的支持了。
说了这么多,程序员最喜欢看到的东西还是代码。首先,请自行下载安装Gradle,然后,按照常见的Java项目布局把代码准备好(感谢Maven为我们给予我们约定),比如:
src/main/java,源代码文件目录 src/main/resources,资源文件目录 src/test/java,测试代码目录
下面是一个简单的Gradle构建脚本,将其存放于build.gradle
apply plugin: 'java' repositories { mavenCentral() } dependencies { compile( 'com.google.guava:guava:13.0.1', 'joda-time:joda-time:2.1' ) testCompile( 'junit:junit:4.10', 'org.mockito:mockito-all:1.9.0' ) } (build.gradle)
接下来的事情就很简单了,在命令行里键入
gradle build
如果一切正常,我们应该会看到构建成功的字样,然后,到build/lib,你就看到自己构建出来的JAR文件了。当然,这只是一个简单得不能再简单的例子,如果需要了解更多,Gradle那详尽的文档便是最好的去处。
关于构建工具的选择考量,我曾经写过一篇blog专门讨论,《选择,构建工具》。如果你在做构建工具的技术选型,可以参考。
您还没有登录,请您登录后再发表评论
要求和准备Java 1.8+ Gradle构建系统> = 6.5.1或建议使用Maven。 为您的项目配置的OAuth 2.0凭据。 (请注意,要运行示例,请使用“其他”客户端类型。)下载客户端库首先,下载库或将其包含在您的构建配置中。 然后...
关于这个仓库 该存储库是从派生的,该库最初托管在。 最近的更新大约在6年前,似乎没有得到维护。...如果您使用Gradle ,请在build.gradle添加依赖build.gradle : compile('io.sgr:s2-geometry-library-java:1.0.1')
Jeka (以前称为Jerkar)是一个完整的Java构建系统,它仅使用Java代码自动执行构建或任务,从而成为ala Ant , Maven , Gradle或Buildr 。 忘记冗长的Poms和僵硬的Maven结构。 摆脱Gradle脚本/ DSL。 享受您熟悉...
java工具源码知更鸟 目标:制作通用的源代码架构分析工具 目前,它还处于初期。 但是,现在它可以为PlantUML(plantuml.com)自动生成类图脚本。 因此,即使对于复杂的源代码,robinbird和PlantUML几乎可以自动生成...
练习JavaFX OpenCV 使用OpenCV基于Gradle的JavaFX App。 推荐环境 操作系统:Windows 10 ・ MacOS Catalina ・ Ubuntu 18.04 ...# Run : Set `java.library.path` In `build.gradle` $ ./gradlew r
重新载入Java 支持类重载的ClassLoader的简单实现运行示例构建项目开始示例 gradle buildjava -cp build/classes/test/:build/libs/reload-java-1.0.jar reload.ReloadExample1该应用程序将等待输入,输入r + 已加载...
构建说明安装 JDK 8 设置您的 PATH 以使用 JDK 8(实验室机器注意: export JAVA_HOME=/lusr/opt/jdk1.8 ) ./gradlew build test ./gradlew :desktop:run -- 这将连接到测试服务器。项目结构core -- 核心游戏代码。...
Game.java (包含游戏的主要逻辑) TicTacToeTest.java (包含我们为确保程序相应运行而构建的测试) build.gradle (我们使用的gradle构建文件) docs (包含项目报告的Markdown文件) ## Java编程规则1.班级班级用...
正常情况下,R文件缺失时,我们只需要使用 Build -> Clean Project 和 Build -> Rebuild Project 重构下工程就可以了,但是我反复重构都没有用 这就纳闷了,折腾了半天后,在Messages中发现了这个error: 错误信息...
服务器工具传送ServerTools Teleport 提供了许多用于在服务器周围传送的系统和命令发展如果您分叉了此存储库并希望帮助做出贡献,请按照以下步骤操作: 将 repo 克隆到计算机上的文件夹。 在 repo 的根文件夹中打开...
#android-starter-app ##概述 一个快速的起点,使用支持库构建 Material Design android 应用程序以实现向后兼容性。...在app/build.gradle和AndroidManifest.xml中将applicationId更改为您的包名称。 您已准
MVP-Dagger2--RxJava2-示例 该项目是关于在Recyclerview上显示带有标题和...这些是gradle依赖列表,需要在app build.gradle中包含 compile "com.android.support:appcompat-v7:25.1.0" compile "com.android.support:r
建造 创建一个包含 Android SDK 路径的local....运行gradle build来编译 Java 代码并构建一个 APK。 要将构建的 APK 安装到设备,请运行: adb install -r build/outputs/apk/android-bridge-debug-unaligned.apk
将其添加到存储库末尾的root build.gradle中: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 步骤2.添加依赖项 dependencies { implementation '...
BrandingExampleProject 此示例项目演示了如何使用Gradle的“产品... 每个Build Variant都会从资源中生成自己的R类(或其他生成的源代码)。 变体之间没有任何共享。 一些要点: 资源很容易:它们被合并,并且在产品
将其添加到存储库末尾的root build.gradle中: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 步骤2.添加依赖项 dependencies { compile '...
Spring启动演示入门运行gradle构建所有必需的文件: ./gradlew build设置保管库启动保管库容器: docker-compose up -d --build vault 初始化保管库: docker-compose --no-ansi exec -e VAULT_CLI_NO_COLOR=1 -e ...
将JitPack存储库添加到您的构建文件中将其添加到存储库末尾的root build.gradle中: allprojects {repositories {...maven { url 'https://www.jitpack.io' }}}步骤2.添加依赖项将此拖行添加到您的模块依赖项中 ...
IIT Roorkee开发者注: 要做出贡献,请分叉该项目并: git clone https://www.github.com/akashdeepgoel/screencapture.git 在Android Studio中打开项目,然后通过build.gradle进行构建在单独的分支上工作并发送...
将其添加到存储库末尾的root build.gradle中: allprojects{ repositories{ ... maven{ url 'https://jitpack.io'} } } 步骤2.添加依赖项 dependencies{ implementation 'com.github.aboutgaurav:gesto:0.1.1'...
相关推荐
要求和准备Java 1.8+ Gradle构建系统> = 6.5.1或建议使用Maven。 为您的项目配置的OAuth 2.0凭据。 (请注意,要运行示例,请使用“其他”客户端类型。)下载客户端库首先,下载库或将其包含在您的构建配置中。 然后...
关于这个仓库 该存储库是从派生的,该库最初托管在。 最近的更新大约在6年前,似乎没有得到维护。...如果您使用Gradle ,请在build.gradle添加依赖build.gradle : compile('io.sgr:s2-geometry-library-java:1.0.1')
Jeka (以前称为Jerkar)是一个完整的Java构建系统,它仅使用Java代码自动执行构建或任务,从而成为ala Ant , Maven , Gradle或Buildr 。 忘记冗长的Poms和僵硬的Maven结构。 摆脱Gradle脚本/ DSL。 享受您熟悉...
java工具源码知更鸟 目标:制作通用的源代码架构分析工具 目前,它还处于初期。 但是,现在它可以为PlantUML(plantuml.com)自动生成类图脚本。 因此,即使对于复杂的源代码,robinbird和PlantUML几乎可以自动生成...
练习JavaFX OpenCV 使用OpenCV基于Gradle的JavaFX App。 推荐环境 操作系统:Windows 10 ・ MacOS Catalina ・ Ubuntu 18.04 ...# Run : Set `java.library.path` In `build.gradle` $ ./gradlew r
重新载入Java 支持类重载的ClassLoader的简单实现运行示例构建项目开始示例 gradle buildjava -cp build/classes/test/:build/libs/reload-java-1.0.jar reload.ReloadExample1该应用程序将等待输入,输入r + 已加载...
构建说明安装 JDK 8 设置您的 PATH 以使用 JDK 8(实验室机器注意: export JAVA_HOME=/lusr/opt/jdk1.8 ) ./gradlew build test ./gradlew :desktop:run -- 这将连接到测试服务器。项目结构core -- 核心游戏代码。...
Game.java (包含游戏的主要逻辑) TicTacToeTest.java (包含我们为确保程序相应运行而构建的测试) build.gradle (我们使用的gradle构建文件) docs (包含项目报告的Markdown文件) ## Java编程规则1.班级班级用...
正常情况下,R文件缺失时,我们只需要使用 Build -> Clean Project 和 Build -> Rebuild Project 重构下工程就可以了,但是我反复重构都没有用 这就纳闷了,折腾了半天后,在Messages中发现了这个error: 错误信息...
服务器工具传送ServerTools Teleport 提供了许多用于在服务器周围传送的系统和命令发展如果您分叉了此存储库并希望帮助做出贡献,请按照以下步骤操作: 将 repo 克隆到计算机上的文件夹。 在 repo 的根文件夹中打开...
#android-starter-app ##概述 一个快速的起点,使用支持库构建 Material Design android 应用程序以实现向后兼容性。...在app/build.gradle和AndroidManifest.xml中将applicationId更改为您的包名称。 您已准
MVP-Dagger2--RxJava2-示例 该项目是关于在Recyclerview上显示带有标题和...这些是gradle依赖列表,需要在app build.gradle中包含 compile "com.android.support:appcompat-v7:25.1.0" compile "com.android.support:r
建造 创建一个包含 Android SDK 路径的local....运行gradle build来编译 Java 代码并构建一个 APK。 要将构建的 APK 安装到设备,请运行: adb install -r build/outputs/apk/android-bridge-debug-unaligned.apk
将其添加到存储库末尾的root build.gradle中: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 步骤2.添加依赖项 dependencies { implementation '...
BrandingExampleProject 此示例项目演示了如何使用Gradle的“产品... 每个Build Variant都会从资源中生成自己的R类(或其他生成的源代码)。 变体之间没有任何共享。 一些要点: 资源很容易:它们被合并,并且在产品
将其添加到存储库末尾的root build.gradle中: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 步骤2.添加依赖项 dependencies { compile '...
Spring启动演示入门运行gradle构建所有必需的文件: ./gradlew build设置保管库启动保管库容器: docker-compose up -d --build vault 初始化保管库: docker-compose --no-ansi exec -e VAULT_CLI_NO_COLOR=1 -e ...
将JitPack存储库添加到您的构建文件中将其添加到存储库末尾的root build.gradle中: allprojects {repositories {...maven { url 'https://www.jitpack.io' }}}步骤2.添加依赖项将此拖行添加到您的模块依赖项中 ...
IIT Roorkee开发者注: 要做出贡献,请分叉该项目并: git clone https://www.github.com/akashdeepgoel/screencapture.git 在Android Studio中打开项目,然后通过build.gradle进行构建在单独的分支上工作并发送...
将其添加到存储库末尾的root build.gradle中: allprojects{ repositories{ ... maven{ url 'https://jitpack.io'} } } 步骤2.添加依赖项 dependencies{ implementation 'com.github.aboutgaurav:gesto:0.1.1'...