Most Java projects are pretty similar as far as the basics go: you need to compile your Java source files, run some unit tests, and create a JAR file containing your classes. It would be nice if you didn’t have to code all this up for every project. Luckily, you don’t have to. Gradle solves this problem through the use of plugins. A plugin is an extension to Gradle which configures your project in some way, typically by adding some pre-configured tasks which together do something useful. Gradle ships with a number of plugins, and you can easily write your own and share them with others. One such plugin is the Java plugin. This plugin adds some tasks to your project which will compile and unit test your Java source code, and bundle it into a JAR file.
The Java plugin is convention based. This means that the plugin defines default values for many aspects of the project, such as where the Java source files are located. If you follow the convention in your project, you generally don’t need to do much in your build script to get a useful build. Gradle allows you to customize your project if you don’t want to or cannot follow the convention in some way. In fact, because support for Java projects is implemented as a plugin, you don’t have to use the plugin at all to build a Java project, if you don’t want to.
We have in-depth coverage with many examples about the Java plugin, dependency management and multi-project builds in later chapters. In this chapter we want to give you an initial idea of how to use the Java plugin to build a Java project.
Let’s look at a simple example. To use the Java plugin, add the following to your build file:
Example: Using the Java plugin
build.gradle
apply plugin: 'java'
Note: The code for this example can be found at
samples/java/quickstart
in the ‘-all’ distribution of Gradle.
This is all you need to define a Java project. This will apply the Java plugin to your project, which adds a number of tasks to your project.
What tasks are available?
You can use
gradle tasks
to list the tasks of a project. This will let you see the tasks that the Java plugin has added to your project.
Gradle expects to find your production source code under
src/main/java
and your test source code under src/test/java
. In addition, any files under src/main/resources
will be included in the JAR file as resources, and any files under src/test/resources
will be included in the classpath used to run the tests. All output files are created under the build
directory, with the JAR file ending up in the build/libs
directory.
The Java plugin adds quite a few tasks to your project. However, there are only a handful of tasks that you will need to use to build the project. The most commonly used task is the
build
task, which does a full build of the project. When you run gradle build
, Gradle will compile and test your code, and create a JAR file containing your main classes and resources:
Example: Building a Java project
Output of
gradle build
> gradle build :compileJava :processResources :classes :jar :assemble :compileTestJava :processTestResources :testClasses :test :check :build BUILD SUCCESSFUL in 0s 6 actionable tasks: 6 executed
Some other useful tasks are:
- clean
- Deletes the
build
directory, removing all built files. - assemble
- Compiles and jars your code, but does not run the unit tests. Other plugins add more artifacts to this task. For example, if you use the War plugin, this task will also build the WAR file for your project.
- check
- Compiles and tests your code. Other plugins add more checks to this task. For example, if you use the
checkstyle
plugin, this task will also run Checkstyle against your source code.
Usually, a Java project will have some dependencies on external JAR files. To reference these JAR files in the project, you need to tell Gradle where to find them. In Gradle, artifacts such as JAR files, are located in a repository. A repository can be used for fetching the dependencies of a project, or for publishing the artifacts of a project, or both. For this example, we will use the public Maven repository:
Example: Adding Maven repository
build.gradle
repositories { mavenCentral() }Java annotations. Java annotations overview. Built-in Java Annotations. @Deprecated Java Annotation. @Override Java Annotation. @SuppressWarnings java annotation. Java custom annotation. DRY (Don't repeat yourself) Single Responsibility Principle (SRP) Open Closed Design Principle Liskov Substitution Principle (LSP) Interface Segregation Principle (ISP) Dependency Injection or Inversion principle Aggregation Design Principle. Core java tutorial. Programming language. Overview of Java. Java features JVM details. JVM, JRE and JDK. Java Coding Guidelines. Important definitions. Variable and data types. Hello world java program. Important Java Programs. Basic Programs. How to set permanent path in java? OOPs Basics. Object and Class in Java. OOPs Principles/Concepts. Abstraction in java. Encapsulation in java. Polymorphism in java. Method overloading. Method overriding. Dynamic method dispatch. Association. Inheritance. Aggregation. Command line arguments. How to execute command line argument program in eclipse. How to read input from command line in Java using Scanner. Abstract class in java. Interface in java. Constructor in java. Package in java. Access modifier in java. Static import in java. Package class in java. this in java.
No comments:
Post a Comment