官术网_书友最值得收藏!

Convention over configuration

Convention over configuration is one of the main design philosophies behind Apache Maven. Let's go through a few examples.

A complete Maven project can be created using the following configuration file (pom.xml):

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.packt</groupId>
  <artifactId>sample-one</artifactId>
  <version>1.0.0</version>
</project>

Note

The Maven POM file starts with the <project> element. Always define the <project> element with the schema. Some tools can't validate the file without it:

<project xmlns=http://maven.apache.org/POM/4.0.0
         xmlns:xsi=………
         xsi:schemaLocation="…">

The pom.xml file is the heart of any Maven project and is discussed in detail in Chapter 2, Understanding the Project Object Model (POM). Copy the previous configuration element and create a pom.xml file out of it. Then, place it in a directory called chapter-01, and then create the following child directories under it:

  • chapter-01/src/main/java
  • chapter-01/src/test/java

Now, you can place your Java code under chapter-01/src/main/java and test cases under chapter-01/src/test/java. Use the following command to run the Maven build from where the pom.xml is:

$ mvn clean install

This little configuration that you found in the sample pom.xml file is tied up with many conventions:

  • Java source code is available at {base-dir}/src/main/java
  • Test cases are available at {base-dir}/src/test/java
  • The type of the artifact produced is a JAR file
  • Compiled class files are copied to {base-dir}/target/classes
  • The final artifact is copied to {base-dir}/target
  • http://repo.maven.apache.org/maven2, is used as the repository URL.

If someone needs to override the default, conventional behavior of Maven, then it is possible too. The following sample pom.xml file shows how to override some of the preceding default values:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.packt</groupId>
  <artifactId>sample-one</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <build>    
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>              
    <testSourceDirectory>${basedir}/src/test/java               
                                         </testSourceDirectory>     
    <outputDirectory>${basedir}/target/classes
                                             </outputDirectory>     
  </build>
</project>
主站蜘蛛池模板: 枝江市| 和林格尔县| 花垣县| 淳化县| 安顺市| 鹰潭市| 南漳县| 苏尼特左旗| 台北县| 岳阳县| 响水县| 武宣县| 华安县| 静乐县| 灌阳县| 太仆寺旗| 和硕县| 永兴县| 洛川县| 凤山市| 贵溪市| 湘阴县| 合江县| 彰化市| 穆棱市| 赣州市| 任丘市| 漳浦县| 吉首市| 巴青县| 万源市| 八宿县| 洛扎县| 石嘴山市| 呼伦贝尔市| 阿巴嘎旗| 武安市| 淮北市| 舒城县| 长宁区| 阿勒泰市|