Maven【Pom文件项目应用】

本文详细介绍了Maven项目的核心配置文件Pom.xml的各部分功能,包括依赖管理、项目构建配置等,帮助读者深入理解Pom.xml的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#介绍Pom.xml标签
原谅我Pom.xml文件 ~ 不小心把你给解刨了~~~,哈哈哈哈哈哈哈

##0.依赖包

<!--整个项目统一使用字符集编码,文件拷贝时的编码-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!--引用javaEE-->
        <version.javaee></version.javaee>
		<!--引用mysql-->
        <version.mysql></version.mysql>
		<!--被用于java.lang层次中类的java实用程序包的一个包,他是一个语言包,他里面包含了很多种类型-->
		<!--利用java编程语言进行程序设计的基础类,他是类层次结构的类-->
        <version.commons.lang></version.commons.lang>
		<!--发送email-->
        <version.commons.email></version.commons.email>
		<!--jackson是一种JSON API 是非常流行的,并且速度非常快,
		    他有两种不同的Json解析器1 ObjectMapper:把Json解析到自定义的java类中,
			jackson jsonParser:一种拉式解析,解析一组Json数据,
			Jackson Annotations依赖Jackson Core,Jackson Databind依赖Jackson Annotations。
		-->
        <version.jackson></version.jackson>
		<!--通用模板管理器,java的模板引擎,使用它可以让我们获取java语言中定义的对象,实现界面与java代码进行真正的分离
            他的功能就是当我们存值得时候,,她使用特定的语法进行获取
		-->
        <version.velocity></version.velocity>
		<!--简称为JWT,是为了网络应用环境间传递声明而执行的一种基于json开发标准
		    用于身份的提供者于服务提供者之间传递被认证的用户身份信息
		     它是由头部,载荷,签名组成,可以实现单点登录
		-->
        <version.jsonwebtoken></version.jsonwebtoken>
		<!--全英:simple logging Facade for java ,他不是一个正真的日志实现,他的好处就是你可以在后台使用
	        任意一个API
	    -->
        <version.slf4j></version.slf4j>
		<!--是一组可移植的CDI依赖注入-->
        <version.deltaspike></version.deltaspike>
		<!--为代码提供监控指标度量的类库,提供了很多第三方的统计信息-->
        <version.metrics></version.metrics>
		<!--开源日志组件,提供了core,classic日志系统,access与servlet容器集成提供通过http来访问日志功能-->
        <version.logback></version.logback>
		<!--为我们提供了API-->
        <version.swagger></version.swagger>
		<!--java 代码覆盖率工具-->
        <version.jacoco></version.jacoco>
		<!--测试编写程序-->
        <version.junit></version.junit>
		<!--java与json进行转换的类库-->
        <version.genson></version.genson>
		<!--valid4j是Java的一个简单的断言和验证库,valid4j还提供了对常规输入验证的支持-->
        <version.valid4j></version.valid4j>
		<!--主要目的是简化Java项目集成测试和功能测试的编写-->
        <version.arquillian></version.arquillian>
		<!--为了规范使用的-->
        <version.itoo-tool></version.itoo-tool>
		<!--读取excel文件-->
        <version.JExcel></version.JExcel>
		<!--上传图片-->
        <version.fastdfs-client-java></version.fastdfs-client-java>
		<!--支持文件上传,多部分文件上传功能的支持添加到servlet和Web应用程序-->
        <version.commons-fileupload></version.commons-fileupload>
		<!--主要流的功能,程序类,流实现,文件过滤器,文件比较器,endian转换类-->
        <version.commons-io></version.commons-io>

##1.开始部分

    <!--maven项目本身就有的-->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <!--maven项目版本-->
    <modelVersion>4.0.0</modelVersion>
         <!--企业名称-->
    <groupId></groupId>
       <!--项目名字-->
    <artifactId></artifactId>
       <!--->
        <!--版本名字->
     <version>1.0-snapshot</version>
      <!-打包方式-->
    <packaging>war</packaging>    

##2.定义变量名称
为什么需要变量名,因为当我们的jboss解压了war之后我们要去找我们的依赖项,这样我们就可以根据我们声明的变量名称去找我们的依赖项或者是配置,并且我们可以随时的更改我们的版本号

 <!--配置文件是用来管理jar包的版本号-->
 <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <version.javaee>7.0</version.javaee>
        ..........      
    </properties>

##3.寻找依赖包管理项

1.在依赖的各个项中我们会发现有一个${XX}这中表示
2.pom Scope的行为总结
1Compile:scope的默认,maven工程会打包到最终的arifact中
2provided:这个表示scope会对应依赖然后由应用的JDK和容器来提供
3runtime:表示在运行期间的时候是可用的,
4test:只用在测试下,execution必须定义在test scope下面,并且这些包汇报打包到最终的artefact
5import:从pom文件中导入依赖配置

	<!--依赖包管理项
	 该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。
	  它们自动从项目定义的仓库中下载。
         要获取更多信息,请看项目依赖机制。 
	-->
  <dependencies>
	     <!--具体的依赖项-->
        <!--上传文件依赖jar包-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${version.commons-fileupload}</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <!--表示引用变量,在这里可以想成全局变量-->
            <version>${version.commons-io}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.deltaspike.core</groupId>
            <artifactId>deltaspike-core-api</artifactId>
			<!--指定当前包的范围依赖只在编译-->
            <scope>compile</scope>
            <version>${version.deltaspike}</version>
        </dependency>
        <!--描述使用到的排除次jar,exclusion不可以使用version-->
            <exclusions>
                <exclusion>
                    <groupId>org.reflections</groupId>
                    <artifactId>reflections</artifactId>
                </exclusion>              
            </exclusions>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.10</version>
			 <!-- 依赖类型,默认类型是jar-->
            <type>jar</type>
        </dependency>

##4.进行项目构建

 <build>
	<!--构建过程中使用的插件列表-->
        <plugins>
		<!--元素包含描述插件所需要的信息-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
				<!--该插件所需要的特殊配置-->
                <configuration>
				<!--源代码编辑版本-->
                    <source></source>
				<!--目标平台编辑版本-->
                    <target></target>
					<!--传递编译器自身不包含但是却支持的参数项-->
				     <compilerArguments>
                        <endorseddirs></endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
              <plugin>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <configuration>
				<!--如果你再没有web.xml文件的情况下创建war,则这个时候使用false-->
                    <failOnMissingWebXml></failOnMissingWebXml>
                   <!--我们要传输的webResources列表-->
				   <webResources>
                        <resource>
						<!--是否有参数值代替参数名-->
                            <filtering></filtering>
							<!--制定目录-->
                            <directory></directory>
							<!--包含的模式列表-->
                            <includes>
                                <include></include>
                            </includes>
                        </resource>
                    </webResources>
					<!--把war目录下的格外文件的单个目录,放置jsjp-->
                    <warSourceDirectory></warSourceDirectory>
					<!--使用web.xml的路径-->
                    <webXml>l</webXml>
                </configuration>
            </plugin>
                <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
				  <!-- 在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 --> 
                <executions>
				<!--插件所需要的执行信息-->
                    <execution>
                        <goals>
                            <goal></goal>
                        </goals>
                        <id></id>
                    </execution>
                    <execution>
					<!--配置的执行目标-->
                        <goals>
                            <goal></goal>
                        </goals>
                        <id></id>
						<!--绑定目标的构建生命周期阶段,如果省略目标会被绑定到元数据的配置默认阶段-->
                        <phase>package</phase>
                    </execution>
                </executions>
				<!--作为Dom对象的配置-->
                <configuration>
                    <destFile></destFile>
                    <dataFile></dataFile>
                </configuration>
                <version></version>
            </plugin>
        </plugins>
    </build>

##5.项目配置与行为是否激活
1通常Profile是pom.xml中最后一个元素
2每一个Profile都必须有一个元素。这个die元素的名字在命令行中去调用

Profile可以干什么?
他可以覆盖项目构建的名字:1项目依赖,项目配置,以及影响构建行为。。

Profile的适用场景是什么?
1针对不同环境参数激活一个profile的方式,就是激活profile,

  <profiles>
	<!--根据环境参数或命参数激活构建处理-->
        <profile>
		<!--构建过程中的唯一标识符,使用命令行的时候使用-->
            <id></id>
			<!--制定激活的条件
			Activation是profile的开启钥匙。profile的力量来自于它能够
                 在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元
                 素并不是激活profile的唯一方式
			-->
            <activation>
                <property>
				<!--激活profile的属性名称-->
                    <name></name>
                </property>
				<!--没有激活条件则是为true,所以表示默认profile是被激活的-->
                <activeByDefault></activeByDefault>
            </activation>
            <!--依赖,jar包管理-->
            <dependencyManagement>
				<!--依赖,jar包管理-->
					<!--dependencyManagement与dependencies区别:dependencies会自动的引入到dependencies里所有的依赖项,并且被所有子项目继承
					dependencyManagement只是声明依赖但是不引入,如果子项目中没有,那么是不会跑到父项目中的
				-->
                <dependencies>
                    <dependency>
                        <groupId></groupId>
                        <artifactId></artifactId>
                        <version>}</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>

#总结
POm文件还有很多用处,他是maven的核心,通过配置文件可以很好的体会到为什么他是maven的核心,哈哈

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王雪芬-ghqr-264962

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值