Some useful commands and snippets for Apache Maven
sudo apt install maven
See: Maven Getting Started Guide
mvn archetype:generate -B \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.4 \
-DgroupId=com.company \
-DartifactId=app-name \
-Dversion=1.0.0
mvn archetype:help -Ddetail=true -Dgoal=generate
The basic POM is inherited from the super POM which is the system wide POM for any Maven project unless a parent POM is supplied. Default repository: Maven Central
See: Introduction to the POM
<project
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>app-name</artifactId>
<version>1.0.0</version>
...
...
<dependencies>
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<scope>compile|runtime|test</scope>
</dependency>
</dependencies>
...
...
<build>
...
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
...
<plugin>
...
</plugin>
</plugins>
</pluginManagement>
...
...
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
...
...
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
...
</build>
...
</project>
See: Project Object Model
app-name
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- company
| `-- App.java
`-- test
`-- java
`-- com
`-- company
`-- AppTest.java
See: Standard Directory Layout
Command | Description |
---|---|
mvn compile | Compile application sources |
mvn test-compile | Compile test sources |
mvn test | Compile test sources and run unit tests |
mvn package | Generate a JAR |
mvn install | Install JAR in local repository |
mvn site | Generate website |
mvn clean | Remove target dir with build data |
mvn clean install –X
mvn help:effective-pom
mvn dependency:tree
mvn dependency:build-classpath
mvn dependency:analyze
mvn dependency:copy-dependencies