欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pom文件详解

程序员文章站 2022-04-26 15:57:52
...

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> 
相关标签: pom