当前位置:主页 > 技术文档 > POM 下载

POM文件帮助文档 高质量版

  • 更新:2020-10-14 10:23:37
  • 大小:411 KB
  • 热度:731
  • 审核:富欣荣
  • 类别:技术文章
  • 格式:PDF

  • 资源介绍
  • 相关推荐

pom文件详解

父级常用POM

<!-- 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,
           这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 --> 
<modelVersion> 4.0.0 </modelVersion> 
<!-- 项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app --> 
<groupId>xxx</groupId> 
<!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group ID下,artifact ID也必须是唯一的。通常和项目名称保持统一 --> 
<artifactId>xxx</artifactId> 

<!-- 项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,默认jar--> 
<packaging> jar </packaging> 

<!-- 项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 --> 
<version> 1.0-SNAPSHOT </version> 
<!-- 发现依赖和扩展的远程仓库列表。下面的是阿里云的镜像仓库 --> 
<repositories> 
    <repository>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </repository>
</repositories> 
<!-- 模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 --> 
<modules>
    <!--子项目相对路径-->
    <module></module>
</modules> 
<!-- 以值替代名称,Properties可以在整个POM中使用--> 

<properties>
    <!-- 定义 java.version 1.8-->
    <java.version>1.8</java.version>
    <!-- 使用 ${java.version}-->
    <maven.compiler.source>${java.version}</maven.compiler.source>
</properties> 

<!-- profile可以让我们定义一系列的配置信息,然后指定其激活条件,指定activeByDefault为true的时候就表示当没有指定其他profile为激活状态时,该profile就默认会被激活 -->

<!--通常用profile来动态的选择配置文件,即多个部署环境 -->
<!-- 示例代码就展示了3种环境,本地开发环境,生产环境,测试环境,部署打包的时候制定不同的profile就可以 -->
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <activeProfile>dev</activeProfile>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>pro</id>
        <properties>
            <activeProfile>pro</activeProfile>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <activeProfile>test</activeProfile>
        </properties>
    </profile>
</profiles>
<!-- 一般在最顶层的pom文件里,主要用来统一管理项目依赖的版本号,确保应用的各个项目的依赖和版本一致 --> 
<dependencyManagement> 
    <dependencies> 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <!-- 使用上文设置的properties -->
            <version>${spring.boot.version}</version>
        </dependency>
    </dependencies> 
</dependencyManagement> 

<!-- 依赖具体的jar包 -->
<dependencies>  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter</artifactId>  
        <!-- 如果不设置version,就会父级pom中dependencyManagement找,继承父级的 version 。如果设置了就用自己设置的版本-->
        [<version>${spring.boot.version}</version>]
    </dependency>  
</dependencies> 
<!-- 构建项目需要的信息,主要用于编译设置 --> 
<build> 
    <!-- 使用的插件列表 --> 
    <plugins>
        <!-- plugin元素包含描述插件所需要的信息 --> 
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --> 
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
                <encoding>utf-8</encoding>
                <compilerArgument>-XDignore.symbol.file</compilerArgument>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
</build>
<resources> 
    <!-- 这个元素描述了项目相关或测试相关的所有资源路径 --> 
    <resource> 
        <!-- 描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。
                     举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为
                    org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 --> 
        <targetPath></targetPath> 

        <!-- 是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素
                     里列出。 --> 
        <filtering></filtering>

        <!-- 描述存放资源的目录,该路径相对POM路径 --> 
        <directory></directory>

        <!-- 包含的模式列表,例如**/*.xml. --> 
        <includes>
            <include></include>
        </includes>

        <!-- 排除的模式列表,例如**/*.xml -->
        <excludes>
            <exclude></exclude>
        </excludes>
    </resource> 
</resources> 

 

资源下载

资源下载地址1:https://pan.baidu.com/s/1tgzsHeL4fu2D3LoixE3OcQ

相关资源

网友留言

pom文件的使用
邴世敏

众所周知,pom.xml文件是maven工程的核心文件,是全局级别的配置文件;可以在该文件中添加jar包的依赖,使用plugin来配置一些规则;在执行task或goal时,maven会去项目根目录下读取pom.xml文件获取需要的配置信息。总而言之,了解pom文件里面的概念是很有必要的。

maven内置属性(maven预定义,用户可以直接使用)

${basedir}表示项目根目录,既包含pom.xml文件的目录
${version}表示项目版本
${project.basedir},同${basedir}
${project.baseuri}表示项目文件地址
${maven.build.timestamp}表示项目构件开始时间
${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-HHmm,可以自定义其格式。用法如下:

<properties>
    <maven.build.timestamp.format>yyyy-MM-dd-HH-mm-ss</maven.build.timestamp.format>
</properties>

扩展:指定生成的jar包文件名并带时间戳

<build>
    <finalName>
        ${project.artifactId}-${project.version}-${maven.build.timestamp}
    </finalName>
</build>

 

pom文件结构
蒙宏朗

properties:通过<properties>元素,用户可以定义一个或多个maven属性,这样就可以在pom的其他地方使用${属性名}的方式引用该属性。

Maven总共有6类属性,内置属性、POM属性、自定义属性、Settings属性、Java属性。

内置属性:

两个常用内置属性 ${basedir} 表示项目跟目录,即包含pom.xml文件的目录;${version} 表示项目版本

pom属性:

用户可以使用该类属性引用POM文件中对应元素的值。如${project.artifactId}就对应了<project> <artifactId>元素的值,常用的POM属性包括:

${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java/

${project.build.testSourceDirectory}:项目的测试源码目录,默认为src/test/java/

${project.build.directory} : 项目构建输出目录,默认为target/

${project.outputDirectory} : 项目主代码编译输出目录,默认为target/classes/

${project.testOutputDirectory}:项目测试主代码输出目录,默认为target/testclasses/

${project.groupId}:项目的groupId

${project.artifactId}:项目的artifactId

${project.version}:项目的version,与${version} 等价

${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}