The document outlines Oracle's general product direction and provides safe harbor and copyright statements. It states that the information is intended for information purposes only and should not be relied upon for purchasing decisions. Any statements regarding Oracle's plans, expectations, beliefs, intentions and prospects are forward-looking statements subject to risks and uncertainties discussed in Oracle's SEC filings. All information is current as of September 2019 and Oracle undertakes no duty to update any statements.
5. pom.xml
• POM stands for Project Object Model.
• A POM file defines both how a project should be built and how
consumers may interact with the published artifacts.
• Maven delivers lots of features out of the box thanks to the
hierarchical nature of the POM.
• The Maven Super POM provides default configuration for
common plugins such as compiler, resources, surefire, etc.
• The strict nature of the structure found in the POM allows anyone
to understand the configuration.
6.
7. build.gradle
• Gradle build files only specify how projects should be built.
• The definition for consumers is delivered through a generated
POM file.
• Gradle builds are highly customizable, resulting in a wider range
of build patterns.
8. Can we have a maven-like
structure on top of gradle?
21. Additional plugins
• The following plugins can be applied explicitly
org.kordamp.gradle.kotlindoc
org.kordamp.gradle.scaladoc
org.kordamp.gradle.source-xref
org.kordamp.gradle.bom
org.kordamp.gradle.clirr
org.kordamp.gradle.guide
org.kordamp.gradle.integration-test
org.kordamp.gradle.functional-test
23. The Maven super POM
• POMs are hierarchical.
• The chain resolves all the way to the top where you find the
Maven Super POM.
• Super POM configures lots of default & useful behavior.
24. The Gradle super POM
• Gradle does not offer this behavior out of the box.
• But it can be “faked” using a custom plugin.
• The plugin applies the default behavior that consuming projects
require.
28. Standard (gradle)
$ cat settings.gradle
include 'guide'
include 'project1'
include 'project2'
$ cat settings.gradle
include 'guide'
include 'project1'
include 'project2’
project(':guide').buildFileName =
'guide.gradle'
project(':project1').buildFileName =
'project1.gradle'
project(':project2').buildFileName =
'project2.gradle'