使用Gradle自动创建Java项目结构

时间:2022-07-06 05:18:13
D:\N3verL4nd\Desktop\java>tree
卷 本地磁盘 的文件夹 PATH 列表
卷序列号为 00000200 0006:08B0
D:.
├─.gradle
│ ├─3.4.1
│ │ ├─file-changes
│ │ └─taskHistory
│ └─buildOutputCleanup
├─gradle
│ └─wrapper
└─src
├─main
│ └─java
└─test
└─java

D:\N3verL4nd\Desktop\java>


通过使用:

gradle init --type java-library

gradle init --type支持的几个选项:

'basic', 'groovy-library', 'java-application', 'java-library', 'pom', 'scala-library'

我们可以快速建立一个java开发项目目录。

使用Gradle自动创建Java项目结构

src/main/java目录包含了项目的源代码。
src/main/resources目录包含了项目的资源(如属性文件)。
src/test/java目录包含了测试类。
src/test/resources目录包含了测试资源。所有我们构建生成的文件都会在build目录下被创建,这个目录涵盖了以下的子目录
classes目录包含编译过的.class文件。
libs目录包含构建生成的jar或war文件。

src\main\java与src\test\java生成的*.java文件可以删除。

默认生成的build.gradle为:

/*
* This build file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java Library project to get you started.
* For more details take a look at the Java Libraries chapter in the Gradle
* user guide available at https://docs.gradle.org/3.4.1/userguide/java_library_plugin.html
*/

// Apply the java-library plugin to add support for Java Library
apply plugin: 'java-library'

// In this section you declare where to find the dependencies of your project
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}

dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'

// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:20.0'

// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}

我们可以对它做如下修改,来生成一个Hello World程序。

apply plugin: 'java'

jar {
manifest {
attributes 'Main-Class': 'aa.bb.cc.HelloWorld'
}
}


使用gradle tasks可以得到一个可运行任务及其描述的完整列表

这是一个很好的方式,不需要阅读构建脚本,就能对你的项目进行大致的浏览

gradle中几个常见的任务:

assemble任务会编译程序中的源代码,并打包生成Jar文件,这个任务不执行单元测试。
build任务会执行一个完整的项目构建。
clean任务会删除构建目录。
compileJava任务会编译程序中的源代码。

我们编写个简单的HelloWorld程序:

package aa.bb.cc;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

使用Gradle自动创建Java项目结构

D:\N3verL4nd\Desktop\java\src\main\java>tree /f
卷 本地磁盘 的文件夹 PATH 列表
卷序列号为 00000200 0006:08B0
D:.
└─xiya
HelloWorld.java
如上,我们的*.java文件在java目录下的xiya子目录下,而*.java源文件是这样写的:package aa.bb.cc;

生成的结构:

D:\N3verL4nd\Desktop\java\build>tree /f
卷 本地磁盘 的文件夹 PATH 列表
卷序列号为 00000200 0006:08B0
D:.
├─classes
│ └─main
│ └─aa
│ └─bb
│ └─cc
│ HelloWorld.class
可见,src\main\java文件夹下的目录结构只是为了对源文件分类。


参考:

https://docs.gradle.org/current/userguide/build_init_plugin.html