微服务架构中l⽂件详解
⽂件⽬录
⼀、maven项⽬的⽬录结构
  pom⽂件定义了⼀个maven项⽬的maven配置,⼀般pom⽂件的放在项⽬或者模块的根⽬录下。
maven的遵循约定⼤于配置,约定了如下的⽬录结构:
⽬录⽬的
${basedir}存放l和所有的⼦⽬录
${basedir}/src/main/java项⽬的java源代码
${basedir}/src/main/resources项⽬的资源,⽐如说property⽂件,l
${basedir}/src/test/java项⽬的测试类,⽐如说Junit代码
${basedir}/src/test/resources测试⽤的资源
${basedir}/src/main/scripts项⽬脚本源码的⽬录
${basedir}/src/main/webapp/WEB-INF web应⽤⽂件⽬录,web项⽬的信息,⽐如存放l、本地图⽚、jsp视图页⾯${basedir}/target打包输出⽬录
${basedir}/target/classes编译输出⽬录
${basedir}/target/site⽣成⽂档的⽬录,可以通过index.html查看项⽬的⽂档
${basedir}/target/test-classes测试编译输出⽬录
Test.java Maven只会⾃动运⾏符合该命名规则的测试类
~/.m2/repository Maven默认的本地仓库⽬录位置
⼆、根元素和必要配置
<project xmlns ="/POM/4.0.0"
xmlns:xsi ="/2001/XMLSchema-instance"
xsi:schemaLocation = "/POM/4.0.0
/xsd/maven-4.0.0.xsd">
<!--模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--公司或者组织的唯⼀标志,也是打包成jar包路径的依据-->
<!--⼀般写公司域名-->
<!--例如companyname.project-group,maven打包jar包的路径:/com/companyname/project-group -->
<groupId>companyname.project-group</groupId>
maven打包本地jar包
<!--项⽬的唯⼀ID,⼀个groupId下⾯可能多个项⽬,就是靠artifactId来区分的-->
<!--⼀般写项⽬名称-->
<artifactId>project</artifactId>
<!--项⽬当前版本,格式为:主版本.次版本.增量版本-限定版本号-->
<version>1.0</version>
<!--项⽬产⽣的构件类型,包括jar、war、ear、pom等(项⽬打包⽅式,不写默认为以jar的⽅式打包)-->
<packaging>jar</packaging>
</project>
  project是pom⽂件的根元素,project下有modelVersion、groupId、artifactId、version、packaging等重要的元素。其中,groupId、artifactId、version三个元素⽤来定义⼀个项⽬的坐标,也就是说,⼀个maven仓库中,完全相同的⼀组groupId、artifactId、version,只能有⼀个项⽬。
project:整个pom配置⽂件的根元素,所有的配置都是写在project元素⾥⾯的;
modelVersion:指定了当前POM模型的版本,对于Maven2及Maven 3来说,它只能是4.0.0;
groupId:这是项⽬组的标识。它在⼀个组织或者项⽬中通常是唯⼀的。
artifactId:这是项⽬的标识,通常是⼯程的名称。它在⼀个项⽬组(group)下是唯⼀的。
version:这是项⽬的版本号,⽤来区分同⼀个artifact的不同版本。
packaging:这是项⽬产⽣的构件类型,即项⽬通过maven打包的输出⽂件的后缀名,包括jar、war、ear、pom等。
三、⽗项⽬和parent元素
<!--⽗项⽬的坐标,坐标包括group ID,artifact ID和version。-->
<!--<parent>相当于Java中的extends⼀个pom⽂件中只能有⼀个-->
<!--如果项⽬中没有规定某个元素的值,那么⽗项⽬中的对应值即为项⽬的默认值-->
<parent>
<!--被继承的⽗项⽬的构件标识符-->
<artifactId>companyname.project-group</artifactId>
<!--被继承的⽗项⽬的全球唯⼀标识符-->
<groupId>base-project</groupId>
<!--被继承的⽗项⽬的版本-->
<version>1.0.1-RELEASE</version>
<!--⽗项⽬的l⽂件的相对路径,默认值是../l。-->
<!--寻⽗项⽬的pom:构建当前项⽬的地⽅--)relativePath指定的位置--)本地仓库--)远程仓库-->
<relativePath>../l</relativePath>
</parent>
parent:⽤于指定⽗项⽬;
groupId:parent的⼦元素,⽗项⽬的groupId,⽤于定位⽗项⽬;
artifactId:parent的⼦元素,⽗项⽬的artifactId,⽤于定位⽗项⽬;
version:parent的⼦元素,⽗项⽬的version,⽤于定位⽗项⽬;
relativePath:parent的⼦元素,⽤于定位⽗项⽬pom⽂件的位置。
四、项⽬构建需要的信息
<!--构建项⽬需要的信息-->
<build>
<!---------------------路径管理(在遵循约定⼤于配置原则下,不需要配置)--------------------->
<!--项⽬源码⽬录,当构建项⽬的时候,构建系统会编译⽬录⾥的源码。该路径是相对于l的相对路径。-->
<sourceDirectory />
<!--该元素设置了项⽬单元测试使⽤的源码⽬录。该路径是相对于l的相对路径-->
<testSourceDirectory />
<!--被编译过的应⽤程序class⽂件存放的⽬录。-->
<outputDirectory />
<!--被编译过的测试class⽂件存放的⽬录。-->
<testOutputDirectory />
<!--项⽬脚本源码⽬录,该⽬录下的内容,会直接被拷贝到输出⽬录,因为脚本是被解释的,⽽不是被编译的-->
<scriptSourceDirectory />
<!---------------------资源管理--------------------->
<!--这个元素描述了项⽬相关的所有资源路径列表,例如和项⽬相关的属性⽂件,这些资源被包含在最终的打包⽂件⾥。-->
<resources>
<!--这个元素描述了项⽬相关或测试相关的所有资源路径-->
<resource>
<!--描述了资源的⽬标输出路径。该路径是相对于target/classes的路径-->
<!--如果是想要把资源直接放在target/classes下,不需要配置该元素-->
<!--如果是想要把资源直接放在target/classes下,不需要配置该元素-->
<targetPath />
<!--是否使⽤参数值代替参数名。参数值取⾃⽂件⾥配置的属性,⽂件在filters元素⾥列出。-->
<filtering />
<!--描述存放资源的⽬录,该路径相对POM路径-->
<directory />
<!--包含的模式列表,例如**/*.xml,只有符合条件的资源⽂件才会在打包的时候被放⼊到输出路径中 -->
<includes />
<!--排除的模式列表,例如**/*.xml,符合的资源⽂件不会在打包的时候会被过滤掉-->
<excludes />
</resource>
</resources>
<!--这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性⽂件。-->
<testResources>
<!--这个元素描述了测试相关的所有资源路径,⼦元素说明参考build/resources/resource元素的说明-->
<testResource>
<targetPath />
<filtering />
<directory />
<includes />
<excludes />
</testResource>
</testResources>
<!---------------------插件管理--------------------->
<!--⼦项⽬可以引⽤的默认插件信息。pluginManagement中的插件直到被引⽤时才会被解析或绑定到⽣命周期--> <!--这⾥只是做了声明,并没有真正的引⼊。给定插件的任何本地配置都会覆盖这⾥的配置-->
<pluginManagement>
<!--可使⽤的插件列表-->
<plugins>
<!--plugin元素包含描述插件所需要的信息。-->
<plugin>
<!--插件在仓库⾥的group ID -->
<groupId />
<!--插件在仓库⾥的artifact ID -->
<artifactId />
<!--被使⽤的插件的版本(或版本范围)-->
<version />
<!--是否从该插件下载Maven扩展(例如打包和类型处理器)-->
<!--由于性能原因,只有在真需要下载时,该元素才被设置成enabled -->
<extensions />
<!--在构建⽣命周期中执⾏⼀组⽬标的配置。每个⽬标可能有不同的配置。-->
<executions>
<!--execution元素包含了插件执⾏需要的信息-->
<execution>
<!--执⾏⽬标的标识符,⽤于标识构建过程中的⽬标,或者匹配继承过程中需要合并的执⾏⽬标-->
<id />
<!--绑定了⽬标的构建⽣命周期阶段,如果省略,⽬标会被绑定到源数据⾥配置的默认阶段-->
<phase />
<!--配置的执⾏⽬标-->
<goals />
<!--配置是否被传播到⼦POM -->
<inherited />
<!--作为DOM对象的配置-->
<configuration />
</execution>
</executions>
<!--项⽬引⼊插件所需要的额外依赖-->
<dependencies>
<!--参见dependencies/dependency元素-->
<dependency>
......
</dependency>
</dependencies>
<!--任何配置是否被传播到⼦项⽬-->
<inherited />
<inherited />
<!--作为DOM对象的配置-->
<configuration />
</plugin>
</plugins>
</pluginManagement>
<!--使⽤的插件列表-->
<plugins>
<!--参见build/pluginManagement/plugins/plugin元素-->
<plugin>
<groupId />
<artifactId />
<version />
<extensions />
<executions>
<execution>
<id />
<phase />
<goals />
<inherited />
<configuration />
</execution>
</executions>
<dependencies>
<!--参见dependencies/dependency元素-->
<dependency>
......
</dependency>
</dependencies>
<goals />
<inherited />
<configuration />
</plugin>
</plugins>
<!---------------------构建扩展--------------------->
<!--使⽤来⾃其他项⽬的⼀系列构建扩展-->
<extensions>
<!--每个extension描述⼀个会使⽤到其构建扩展的⼀个项⽬,extension的⼦元素是项⽬的坐标-->
<extension>
<!--项⽬坐标三元素:groupId + artifactId + version -->
<groupId />
<artifactId />
<version />
</extension>
</extensions>
<!---------------------其他配置--------------------->
<!--当项⽬没有规定⽬标(Maven2 叫做阶段)时的默认值-->
<defaultGoal />
<!--构建产⽣的所有⽂件存放的⽬录-->
<directory />
<!--产⽣的构件的⽂件名,默认值是${artifactId}-${version}。-->
<finalName />
<!--当filtering开关打开时,使⽤到的过滤器属性⽂件列表-->
<filters />
</build>
  build标签定义了构建项⽬需要的信息,这部分信息对于定制化项⽬构建是⾮常重要的。这⾥会根据build的⼦元素的特点,简单地分类讲解。
1、路径管理
<!---------------------路径管理(在遵循约定⼤于配置原则下,不需要配置)--------------------->
<!--项⽬源码⽬录,当构建项⽬的时候,构建系统会编译⽬录⾥的源码。该路径是相对于l的相对路径。-->
<sourceDirectory />
<!--该元素设置了项⽬单元测试使⽤的源码⽬录。该路径是相对于l的相对路径-->
<testSourceDirectory />
<!--被编译过的应⽤程序class⽂件存放的⽬录。-->
<outputDirectory />
<!--被编译过的测试class⽂件存放的⽬录。-->
<testOutputDirectory />
<!--项⽬脚本源码⽬录,该⽬录下的内容,会直接被拷贝到输出⽬录,因为脚本是被解释的,⽽不是被编译的-->
<scriptSourceDirectory />
  路径管理定义了各种源码和编译结果的输出路径。如果遵循maven默认的路径约定,这⾥的⼏个元素是不需要配置的。这些元素包括:sourceDirectory:项⽬源码⽬录,定义的是相对于pom⽂件的相对路径;
testSourceDirectory:项⽬单元测试源码⽬录,定义的也是是相对于pom⽂件的相对路径;
outputDirectory:被编译过的应⽤程序class⽂件存放的⽬录,也是是相对于pom⽂件的相对路径;
testOutoutDIrectory:被编译过的测试class⽂件存放的⽬录,也是是相对于pom⽂件的相对路径;
scriptSourceDirectory:项⽬脚本源码⽬录,也是是相对于pom⽂件的相对路径。由于脚本是解释性的语⾔,所以该⽬录下的内容,会直接被拷贝到输出⽬录,⽽不需要编译。
2、资源管理
<!---------------------资源管理--------------------->
<!--这个元素描述了项⽬相关的所有资源路径列表,例如和项⽬相关的属性⽂件,这些资源被包含在最终的打包⽂件⾥。-->
<resources>
<!--这个元素描述了项⽬相关或测试相关的所有资源路径-->
<resource>
<!--描述了资源的⽬标输出路径。该路径是相对于target/classes的路径-->
<!--如果是想要把资源直接放在target/classes下,不需要配置该元素-->
<targetPath />
<!--是否使⽤参数值代替参数名。参数值取⾃⽂件⾥配置的属性,⽂件在filters元素⾥列出-->
<filtering />
<!--描述打包前的资源存放的⽬录,该路径相对POM路径-->
<directory />
<!--包含的模式列表,例如**/*.xml,只有符合条件的资源⽂件才会在打包的时候被放⼊到输出路径中 -->
<includes />
<!--排除的模式列表,例如**/*.xml,符合的资源⽂件不会在打包的时候会被过滤掉-->
<excludes />
</resource>
</resources>
<!--这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性⽂件。-->
<testResources>
<!--这个元素描述了测试相关的所有资源路径,⼦元素说明参考build/resources/resource元素的说明-->
<testResource>
<targetPath />
<filtering />
<directory />
<includes />
<excludes />
</testResource>
</testResources>
  这⾥的元素主要是对应⽤程序resource资源和单元测试部分resource资源的管理,分别通过resource标签和testResource标签管理两种资源。两个标签元素可选的⼦元素都是⼀样的。⼦元素包括:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。