SAGARFIVE

Tutorials

2.2 Maven Project Structure

As Maven follows convention over configuration. Therefore it defines some defaults (can be overridden):

(i). Src files should be in src/main/java

(ii). Test files should be in src/test/java

(iii). pom.xml should be in the root folder

(i). Src files should be in src/main/java/<package-name>

(ii). Test files should be in src/test/java/<package-name>

(iii).. pom.xml should be in the root folder

<?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”>  <modelVersion>4.0.0</modelVersion>
  <groupId>groupId-SimpleMavenProject</groupId>  <artifactId>artifactId-MavenApp</artifactId>  <version>1.0-SNAPSHOT</version>
  <name>artifactId-MavenApp</name>  <!– FIXME change it to the project’s website –>  <url>http://www.example.com</url>
 <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <maven.compiler.source>1.7</maven.compiler.source>    <maven.compiler.target>1.7</maven.compiler.target>  </properties>
<dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.11</version>      <scope>test</scope>    </dependency>  </dependencies>
<build>    <pluginManagement>      <plugins>        <plugin>          <artifactId>maven-clean-plugin</artifactId>          <version>3.1.0</version>        </plugin>      </plugins>    </pluginManagement>  </build>
</project>
Pom.xml content
<?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”>  <modelVersion>4.0.0</modelVersion>  <groupId>groupId-SimpleMavenProject</groupId>  <artifactId>artifactId-MavenApp</artifactId>  <version>1.0-SNAPSHOT</version>  <name>artifactId-MavenApp</name>  <!– FIXME change it to the project’s website –>  <url>http://www.example.com</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <maven.compiler.source>1.7</maven.compiler.source>    <maven.compiler.target>1.7</maven.compiler.target>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.11</version>      <scope>test</scope>    </dependency>  </dependencies>  <build>    <pluginManagement><!– lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) –>      <plugins>        <!– clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle –>        <plugin>          <artifactId>maven-clean-plugin</artifactId>          <version>3.1.0</version>        </plugin>        <!– default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging –>        <plugin>          <artifactId>maven-resources-plugin</artifactId>          <version>3.0.2</version>        </plugin>        <plugin>          <artifactId>maven-compiler-plugin</artifactId>          <version>3.8.0</version>        </plugin>        <plugin>         
<artifactId>maven-surefire-plugin</artifactId>         
<version>2.22.1</version>       
</plugin>       
<plugin>         
<artifactId>maven-jar-plugin</artifactId>         
<version>3.0.2</version>       
</plugin>       
<plugin>         
<artifactId>maven-install-plugin</artifactId>         
<version>2.5.2</version>       
</plugin>       
<plugin>         
<artifactId>maven-deploy-plugin</artifactId>         
<version>2.8.2</version>       
</plugin>       
<!– site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle –>       
<plugin>         
<artifactId>maven-site-plugin</artifactId>         
<version>3.7.1</version>       
</plugin>       
<plugin>         
<artifactId>maven-project-info-reports-plugin</artifactId>         
<version>3.0.0</version>       
</plugin>     
</plugins>   
</pluginManagement> 
</build>
</project>