Build and Test Tools
Maven
POM: project object model
groupId and artifactId
<project>
  <modelVersion>4.0.0</modelVersion>
 
  <!-- the id of the project's group -->
  <groupId>com.mycompany.app</groupId>
  <!-- the id of the artifact (project)-->
  <artifactId>my-app</artifactId>
  <version>1</version>
</project>
Example:
.
 |-- my-module
 |   `-- pom.xml
 `-- parent
     `-- pom.xml
Project Inheritance
<project>
  <!-- pom under my-module -->
  <modelVersion>4.0.0</modelVersion>
 
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent>
 
  <!-- groupId the same as parent-->
  <artifactId>my-module</artifactId>
  <!-- version the same as parent>
</project>
Project Aggregation
- Change the parent POMs packaging to the value "pom"
 - Specify in the parent POM the directories of its modules (children POMs)
 
<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>
 
  <modules>
    <module>../my-module</module>
  </modules>
</project>
JUnit
@org.junit.Test
org.junit.Assert.assertEquals(expected, actual)
It is annoying to type out the name of the library repeatedly, to avoid this we’ll start every test file with:
import org.junit.Test;
import static org.junit.Assert.*;