Spring-使用Gradle构建Java项目

目标

创建一个简单的 app 并使用 gradle 构建。

创建项目

首先要创建一个 Java 项目来让 Gradle 进行构建,为了集中注意力到 Gradle 上,所以尽可能地让项目简单一点。

创建项目目录

在项目目录 gs-gradle 下,使用命令 mkdir -p src/main/java/hello 创建子目录结构。

1
2
3
4
└── src
└── main
└── java
└── hello

在 src/main/java/hello 目录中,创建 HelloWorld.java and Greeter.java 两个类文件。

其中 src/main/java/hello/HelloWorld.java 代码如下:

1
2
3
4
5
6
7
8
package hello;

public class HelloWorld {
public static void main(String[] args) {
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}

src/main/java/hello/Greeter.java 代码如下:

1
2
3
4
5
6
7
package hello;

public class Greeter {
public String sayHello() {
return "Hello world!";
}
}

安装 Gradle

推荐使用 SDKMAN 或者 Homebrew 安装,我这里使用 Homebrew 安装 brew install gradle 即可。

安装成功后,运行 gradle 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
> Task :help

Welcome to Gradle 7.5.1.

Directory '' does not contain a Gradle build.

To create a new build in this directory, run gradle init

For more detail on the 'init' task, see https://docs.gradle.org/7.5.1/userguide/build_init_plugin.html

For more detail on creating a Gradle build, see https://docs.gradle.org/7.5.1/userguide/tutorial_using_tasks.html

To see a list of command-line options, run gradle --help

For more detail on using Gradle, see https://docs.gradle.org/7.5.1/userguide/command_line_interface.html

For troubleshooting, visit https://help.gradle.org

BUILD SUCCESSFUL in 607ms
1 actionable task: 1 executed

Build Java 代码

在项目根目录下,新建 build.gradle 文件,添加 apply plugin: 'java',然后运行命令 gradle build 即可成功构建 jar 包。(不能直接运行,没有声明主类)

定义依赖

在 HelloWorld 类的 main 方法中添加代码,使用 Joda Time 库来获取当前时间并打印。修改后的 HelloWorld.java 如下:

1
2
3
4
5
6
7
8
9
10
11
12
package hello;
import org.joda.time.LocalTime;

public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);

Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}

此时,直接用 gradle build 命令构建会失败,需要修改 build.gradle 配置,添加依赖库。

首先添加 maven 中央仓库

1
2
3
repositories { 
mavenCentral()
}

其次,添加用到的三方库依赖

1
2
3
4
5
6
7
sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
implementation "joda-time:joda-time:2.2"
testImplementation "junit:junit:4.12"
}

最后,指定 JAR 包的属性,包括名称和版本号:

1
2
3
4
jar {
archiveBaseName = 'gs-gradle'
archiveVersion = '0.1.0'
}

这样生成的 jar 包名称将会是 gs-gradle-0.1.0.jar

此时,可以用 gradle build 命令构建成功(但暂时无法直接运行生成的 jar)

使用 Gradle Wrapper 构建项目

使用 Gradle Wrapper 的一个好处是不用在系统上安装 gradle。
首先在项目根目录下使用 gradle wrapper --gradle-version 6.0.1 命令 (也可以不指定版本号) , 得到以下目录结构:

1
2
3
4
5
6
7
└── <project folder>
└── gradlew
└── gradlew.bat
└── gradle
└── wrapper
└── gradle-wrapper.jar
└── gradle-wrapper.properties

然后使用 ./gradlew build 命令构建项目,首次运行指定版本的 gradle wrapper 时,会自动下载对应版本的 gradle 二进制文件。
构建完成后的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
build
├── classes
│   └── java
│   └── main
│   └── hello
│   ├── Greeter.class
│   └── HelloWorld.class
├── distributions
│   ├── gs-gradle.tar
│   └── gs-gradle.zip
├── generated
│   └── sources
│   └── annotationProcessor
│   └── java
│   └── main
├── libs
│   └── gs-gradle-0.1.0.jar
├── scripts
│   ├── gs-gradle
│   └── gs-gradle.bat
└── tmp
├── compileJava
└── jar
└── MANIFEST.MF

可以使用 jar tvf build/libs/gs-gradle-0.1.0.jar 命令看一下生成的 jar 包的内容:

1
2
3
4
5
 0 Fri Dec 02 14:40:14 CST 2022 META-INF/
25 Fri Dec 02 14:40:14 CST 2022 META-INF/MANIFEST.MF
0 Fri Dec 02 14:40:14 CST 2022 hello/
988 Fri Dec 02 14:40:14 CST 2022 hello/HelloWorld.class
369 Fri Dec 02 14:40:14 CST 2022 hello/Greeter.class

为了让 JAR 包可运行,需要修改 build.gradle,添加如下代码

1
2
3
apply plugin: 'application'

mainClassName = 'hello.HelloWorld'

此时,就可以运行 app 了,使用 ./gradlew run 命令

1
2
3
4
5
6
7

> Task :run
The current local time is: 14:43:43.042
Hello world!

BUILD SUCCESSFUL in 802ms
2 actionable tasks: 1 executed, 1 up-to-date
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022 qusong
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信