maven项目的结构为什么是这样的

maven项目的结构为什么是这样的

本文目的

   接上一篇 maven中强大的scope标签详解
   从我第一次接触maven项目时,就很好奇为什么maven项目的结构src/main/javasrc/main/resourcestargetpom.xml,如下:

src
----main
--------java   // 开发的java代码全都放在这里  
--------resources   //xml文件、配置文件等
target    // maven项目编译打包的目标目录
pom.xml   // maven项目的依赖配置

  虽然知道肯定是有个配置来指明了这些目录,但是一直不知道在哪里。最近才明白这个道理。

正文

   其实这个结构是maven的一个文件里定义的。
   我们在用maven的时候,都会指定maven的目录。比如下边这个:
在这里插入图片描述
   mavenlib包里有很多的依赖jar,会在项目使用当前maven的时候,引用进来。
   对应的/lib/maven-model-builder-3.3.3.jar包中,有个pom-4.0.0.xm文件,其中有这么一段。如下:

<build>
    <!--1.编译的目录在项目的target文件夹中-->
    <directory>${project.basedir}/target</directory>
    <!--2.源码编译后存储到target/classes文件夹中-->
    <outputDirectory>${project.build.directory}/classes</outputDirectory>
    <!--3.输出项目的名称-->
    <finalName>${project.artifactId}-${project.version}</finalName>
    <!--4.测试类源码编译后存储到/target/test-classes-->
    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
    <!--5.源码的目录/src/main/java-->
    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
    <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
    <resources>
      <resource>
          <!--6.项目的配置文件目录/src/main/resources-->
        <directory>${project.basedir}/src/main/resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>${project.basedir}/src/test/resources</directory>
      </testResource>
    </testResources>
    <pluginManagement>
      <!-- NOTE: These plugins will be removed from future versions of the super POM -->
      <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) -->
       <!-- maven的这个超级pom默认引用的插件,我们所有的项目都能够继承这些,但是通过上边的提示,
 		    可以大概理解,这些插件将来会从超级pom里移除,因为看起来不够友好,有的项目开发中也会
			依赖,导致冲突-->
      <plugins>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.2-beta-5</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.8</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.3.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  从上图可以看到,maven项目的结构,即从maven的这个配置中继承而来。
  下一篇文章,学习了关于maven引用依赖的时候,如果存在多次依赖的话,maven是如何做的依赖调解,maven的依赖调解机制

猜你喜欢

转载自blog.csdn.net/wohaqiyi/article/details/119882077
今日推荐