POM
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
POM = Project Object Model
In xml
Only one POM.xml per project
Things like:
Project name
URL
devs and contributors
license details
artifactId
groupId
version
Such as:
Can customise default maven build
Change location of source and test files
Add Plugins
Add plugin goals to lifecycle
Contains profiles that can be used in different environments
How parent and modules interact, inherit settings and properties
This is basic pom.xml of the project.
NOTE: <!-- -->
is how comments are written. Below the comments are optional and only for description.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--model version is the version of project descriptor your POM conforms to.-->
<modelVersion>4.0.0</modelVersion>
<!-- Maven Coordinates below -->
<groupId>com.blah</groupId> <!-- id of organisations group -->
<artifactId>blah</artifactId> <!-- ID of the project, normally the name -->
<version>1.0-SNAPSHOT</version>
</project>
In fact there is a super pom
, which this pom above inherits from. It inherits compiler, surefire, jar, resources
Can see this if run mvn clean package
in the project directory in the terminal. you will see plugins being run and the target
directory being created and a jar with the version blah-1.0-SNAPSHOT.jar
in it. Notice that blah
is the artifactid is part of the name of the jar
If we change the version to 2.0-SNAPSHOT and run mvn package
a new jar is created in the target directory.
See ????? for more info on running maven builds.
This super pom allows us to inherit from it and perform mvn package which compiled it and produced a jar.
The super pom + project pom = effective pom
. To see this in IntelliJ, go to search ctrl + shift + a
, and type effective pom
. This will show the file.
We can package our project into a jar or war (For web apps to be run on web containers like tomcat). By default it is a jar.
We can add the following to decide what type of packaging to use a war, before </project>
<packaging>war</packaging>
There are different types of packaging to choose from pom, jar, maven-plugin, ejb, war, ear, rar, par
https://maven.apache.org/pom.html